当前位置: 首页 > 图灵资讯 > 技术篇> #yyds干货盘点# LeetCode程序员面试金典:最长连续序列

#yyds干货盘点# LeetCode程序员面试金典:最长连续序列

来源:图灵教育
时间:2023-06-12 09:21:25

题目:

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

请设计并实现O的时间复杂性(n) 算法解决了这个问题。

示例 1:

输入:nums = [100,4,200,1,3,2]

输出:4

解释:最长数字连续序列 [1, 2, 3, 4]。它的长度是 4。

示例 2:

输入:nums = [0,3,7,2,8,4,6,0

输出:9

代码实现:

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;    }}