LeetCode 75: 2336. Smallest Number in Infinite Set

김준수·2024년 4월 8일
0

LeetCode 75

목록 보기
50/63
post-custom-banner

leetcode link

Description

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.

2336. 무한 집합에서 가장 작은 수

모든 양의 정수를 포함하는 집합이 있습니다 [1, 2, 3, 4, 5, ...].

SmallestInfiniteSet 클래스를 구현하세요:

  • SmallestInfiniteSet() SmallestInfiniteSet 객체를 초기화하여 모든 양의 정수를 포함합니다.
  • int popSmallest() 무한 집합에 포함된 가장 작은 정수를 제거하고 반환합니다.
  • void addBack(int num) 양의 정수 num 을 무한 집합에 추가합니다. 이미 무한 집합에 있지 않은 경우에만 추가합니다.

예시 1:

입력
["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 회 호출됩니다.

Solution

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);
    }
}
post-custom-banner

0개의 댓글