You have a set which contains all positive integers [1, 2, 3, 4, 5, ...]
.
Implement the SmallestInfiniteSet
class:
SmallestInfiniteSet()
Initializes the SmallestInfiniteSet object to contain all positive integers.int popSmallest()
Removes and returns the smallest integer contained in the infinite set.void addBack(int num)
Adds a positive integer num
back into the infinite set, if it is not already in the infinite set.모든 양의 정수를 포함하는 집합이 있습니다 [1, 2, 3, 4, 5, ...]
.
SmallestInfiniteSet
클래스를 구현하세요:
SmallestInfiniteSet()
SmallestInfiniteSet 객체를 초기화하여 모든 양의 정수를 포함합니다.int popSmallest()
무한 집합에 포함된 가장 작은 정수를 제거하고 반환합니다.void addBack(int num)
양의 정수 num
을 무한 집합에 추가합니다. 이미 무한 집합에 있지 않은 경우에만 추가합니다.입력
["SmallestInfiniteSet", "addBack", "popSmallest", "popSmallest", "popSmallest", "addBack", "popSmallest", "popSmallest", "popSmallest"]
[[], [2], [], [], [], [1], [], [], []]
출력
[null, null, 1, 2, 3, null, 1, 4, 5]
설명
SmallestInfiniteSet smallestInfiniteSet = new SmallestInfiniteSet();
smallestInfiniteSet.addBack(2); // 2가 이미 집합에 있으므로 변경되지 않습니다.
smallestInfiniteSet.popSmallest(); // 가장 작은 숫자인 1을 반환하고 집합에서 제거합니다.
smallestInfiniteSet.popSmallest(); // 2를 반환하고 집합에서 제거합니다.
smallestInfiniteSet.popSmallest(); // 3을 반환하고 집합에서 제거합니다.
smallestInfiniteSet.addBack(1); // 1을 집합에 다시 추가합니다.
smallestInfiniteSet.popSmallest(); // 1이 집합에 다시 추가되었고 가장 작은 숫자이므로 반환하고 제거합니다.
smallestInfiniteSet.popSmallest(); // 4를 반환하고 집합에서 제거합니다.
smallestInfiniteSet.popSmallest(); // 5를 반환하고 집합에서 제거합니다.
1 <= num <= 1000
popSmallest
및 addBack
에 대해 최대 1000
회 호출됩니다.class SmallestInfiniteSet {
TreeSet<Integer> removedInteger;
public SmallestInfiniteSet() {
removedInteger = new TreeSet<>();
for (int i = 1; i <= 1000; i++) {
removedInteger.add(i);
}
}
public int popSmallest() {
int small = removedInteger.first();
removedInteger.remove(small);
return small;
}
public void addBack(int num) {
removedInteger.add(num);
}
}