6113. 无限集中的最小数字

 

 1 class SmallestInfiniteSet {
 2     private int min; // 最小值
 3     private ArrayList<Integer> blackList; // 黑名单
 4     public SmallestInfiniteSet() {
 5         this.min = 1;
 6         this.blackList = new ArrayList<Integer>();
 7     }
 8     
 9     // 移除返回无限集中的最小值
10     public int popSmallest() {
11         int res = min;
12         blackList.add(min); // 
13         while(blackList.contains(min+1)){
14             min++;
15         }
16         min +=1;
17         return res;
18     }
19     
20     public void addBack(int num) {
21         if(num<min){
22             min = num;
23         }
24         if(blackList.contains(num)){
25             // blackList.remove(num);
26             blackList.remove(new Integer(num)); //找到第一次出现的元素并删除
27         }
28     }
29 }
30 /**
31 1、用for循环遍历List删除元素时,需要注意索引会左移的问题。
32 2、List删除元素时,为避免陷阱,建议使用迭代器iterator的remove方式。
33 3、List删除元素时,默认按索引删除,而不是对象删除。
34  */
35 /**
36  * Your SmallestInfiniteSet object will be instantiated and called as such:
37  * SmallestInfiniteSet obj = new SmallestInfiniteSet();
38  * int param_1 = obj.popSmallest();
39  * obj.addBack(num);
40  */

 

posted @ 2022-07-10 16:21  yky_xukai的胡思乱想  阅读(34)  评论(0)    收藏  举报