59 分类: Leetcode,算法

128.最长连续序列-特殊

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n)的算法解决此问题。

示例 1:

**输入:** nums = [100,4,200,1,3,2]
**输出:** 4
**解释:** 最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

**输入:** nums = [0,3,7,2,5,8,4,6,0,1]
**输出:** 9

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109
//方法1:排序后遍历
//方法2:1.去重,装到set中·
//        2.判断i是否为起始数字,即set.contains(num-1)不存在,若是起始数字则不断递加向后遍历,记录下连续的最大值
class Solution {
    public int longestConsecutive(int[] nums) {
        int ans=0,temp;
        HashSet<Integer> set=new HashSet<>();
        for(int num:nums){
            set.add(num);
        }
        //用set遍历
        for(int num:set){
            if(set.contains(num-1))
                continue;
            temp=1;
            while(set.contains(num+1)){
                temp++;
                num++;
            }
            ans=Math.max(ans,temp);
        }
        return ans;
    }
}

#none

作者: zyk的zone

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

-->