【HashSet】 128. 最长连续序列

128. 最长连续序列

解题思路

HashSet存储元素: 使用HashSet存储数组元素,以实现O(1)时间复杂度的元素存在性检查。

遍历数组: 遍历整数数组中的每个元素。

判断连续序列起点: 对于当前元素,检查是否存在比它小1的元素。如果存在,说明当前元素不是一个连续序列的起点,跳过当前迭代。

寻找整个连续序列: 如果当前元素是连续序列的起点,使用循环递增 num 直到找到不在数组中的元素,确定整个连续序列的长度。

更新最大长度: 在寻找每个连续序列的过程中,比较当前序列的长度与之前找到的最大长度,更新最大长度。

返回结果: 返回找到的最长连续数字序列的长度。

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for(int num:nums){
            set.add(num);
        }

        int res = 0;

        for(int num:nums){
            if(set.contains(num - 1)){
                continue;// 说明有比他还要小的元素
            }else{
                int count = 0;
                while(set.contains(num++)){
                    count++;// 寻找所有的连续数字
                }

                res = res>count ? res:count;
            }
        }
        return res;

    }
}

你可能感兴趣的:(#,Leetcode,算法,数据结构,java)