LeetCode/cs/smallest-number-in-infinite-set.cs

36 lines
753 B
C#
Raw Normal View History

public class SmallestInfiniteSet {
private SortedSet<int> smaller;
private int nextInfinite;
public SmallestInfiniteSet() {
smaller = new SortedSet<int>();
nextInfinite = 1;
}
public int PopSmallest() {
var m = smaller.Min;
if (m != 0) {
smaller.Remove(m);
return m;
}
++nextInfinite;
return nextInfinite - 1;
}
public void AddBack(int num) {
if (num >= nextInfinite) {
return;
}
smaller.Add(num);
}
}
/**
* Your SmallestInfiniteSet object will be instantiated and called as such:
* SmallestInfiniteSet obj = new SmallestInfiniteSet();
* int param_1 = obj.PopSmallest();
* obj.AddBack(num);
*/