Leetcode 128.最長連續序列
阿新 • • 發佈:2018-12-27
最長連續序列
給定一個未排序的整數陣列,找出最長連續序列的長度。
要求演算法的時間複雜度為 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=newHashSet<>(); 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 }