1. 程式人生 > >Leetcode 128.最長連續序列

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 }