128. 最长连续序列
小于 1 分钟
128. 最长连续序列
中等解法:
- 首先通过 set 将数组去重
- 从 set 中取出值 num - 如果 set 中有 num - 1,进入下一次循环
- 如果没有,依此在 set 中寻找 num 的连续值,并记录最大长度
 
class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }
        int longestStreak = 0;
        for (int num : num_set) {
            if (!num_set.contains(num - 1)) {
                int currentNum = num;
                int currentStreak = 1;
                while (num_set.contains(currentNum + 1)) {
                    currentNum += 1;
                    currentStreak += 1;
                }
                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }
        return longestStreak;
    }
}
 Powered by  Waline  v2.15.5