class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length == 0){
return 0;
}
//个人思路,先排序,然后通过++,但是时间复杂度太高
Arrays.sort(nums);
int result = 1;
int medium = 1;
for(int i = 1; i < nums.length; i++){
if(nums[i]-nums[i-1]==1 || nums[i]-nums[i-1]==0){
medium++;
if(nums[i] == nums[i-1]){
medium--;
}
result = result>medium ? result : medium;
//这一步很关键啊,因为可能最后一个数字是 不会走过f(nums[i+1]-nums[i]!=1)的
}
else{
result = result>medium ? result : medium;
medium = 1;
}
}
return result;
}
}
题目要求要O(n)时间复杂度,使用sort肯定不行了可以使用,hash更新包含当前num的首尾最大长度,以后有时间再做了