Leetcode 128.最长连续序列

最长连续序列

给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 O(n)

示例:

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

输出: 4

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

 1 class Solution{
 2     public int longestConsecutive(int[] nums){
 3         if(nums.length<=0){
 4             return 0;
 5         }
 6         Set<Integer> numSet=new HashSet<>();
 7         for(int n:nums){
 8             numSet.add(n);
 9         }
10         int max=0;
11         for(int n:nums){
12             numSet.add(n);
13         }
14         for(int n:nums){
15             int consecutive=1;
16             int next=n+1;
17             while(numSet.contains(next)){
18                 numSet.remove(next);
19                 next=next+1;
20                 consecutive++;
21             }
22             int pre=n-1;
23             while(numSet.contains(pre)){
24                 numSet.remove(pre);
25                 pre=pre-1;
26                 consecutive++;
27             }
28             max=max<=consecutive?consecutive:max;
29         }
30         return max;
31     }
32 }

猜你喜欢

转载自www.cnblogs.com/kexinxin/p/10187811.html