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 */
标签:删除,min,int,最小,6113,blackList,无限,public,SmallestInfiniteSet 来源: https://www.cnblogs.com/jsuxk/p/16463392.html