前置知识: Set是散列集,用于存储不重复的且不与其他数据相关联的值。Set中的add()方法可以加入元素到散列集,加入的元素不允许与已有元素重复。
求解思路:先将nums数组的所有元素添加到Set集合中,其中的元素没有重复的;随后遍历Set中的元素,先找到其中连续序列里的最小的元素,这一步是通过Set的contains方法来判断的,遍历集合,如果集合中不包含比现在的元素小1的元素,则说明当前元素是连续序列里的最小值。此时记下当前的连续序列最小值,并设置计数器为1,随后继续遍历集合,如果Set中有元素比当前元素大1,则计数器递增,当前元素改变为原元素+1,继续循环,选择计数器较大的值返回即可。
附上代码:
知识点解析:
- for(int i : nums) :Java 中的增强型 for 循环语法,也称为 for-each 循环,用于遍历数组或集合中的元素;int i 定义了整型的迭代变量 i ,用于存储数组nums中的每一个元素,:冒号表示要遍历元素, nums是要遍历的数组或集合名。
if(!set.contains(i-1)) 为了寻找连续递增不重复序列的起始数字,比如
nums = [100,4,200,1,3,2] 找到的第一个curr=100 最后currcount=1 第二个curr=200 最后currcount=1 第三个curr=1,最后currcount=4 max(1,1,4,0)=4while(set.contains(curr+1))只要有比curr大1的就给计数器+1,已经可以确定没有重复的数字,curr也是连续序列中的最小值,因此这样计算出来的数字再配合max一定是正确的答案