【集合】LeetCode 128. 最长连续序列

题目链接

128. 最长连续序列

思路

题目要求找连续序列,且时间复杂度读要求 O(n),可以使用集合进行实现。

代码

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

        int longestStreak = 0;
        for(int num : numSet){
            if(!numSet.contains(num - 1)){
                int currentNum = num;
                int currentStreak = 1;

                while(numSet.contains(currentNum + 1)){
                    currentNum++;
                    currentStreak++;
                }

                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }

        return longestStreak;
    }
}
posted @ 2023-01-06 11:15  Frodo1124  阅读(26)  评论(0编辑  收藏  举报