128. 最長連續序列-set/map-困難
阿新 • • 發佈:2020-09-14
問題描述
給定一個未排序的整數陣列,找出最長連續序列的長度。
要求演算法的時間複雜度為O(n)。
示例:
輸入:[100, 4, 200, 1, 3, 2]
輸出: 4
解釋: 最長連續序列是 [1, 2, 3, 4]。它的長度為 4。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/longest-consecutive-sequence
解答
class Solution { public int longestConsecutive(int[] nums) { if(nums.length <= 1)return nums.length;//set可以去重 Set<Integer> set = new HashSet<Integer>(); for(int num:nums){ set.add(num); } int longest = 0; int currentLongest = 1; for(int num:nums){ currentLongest = 1; if(!set.contains(num-1)){ while(set.contains(num+1)){ currentLongest++; num++; } if(currentLongest > longest)longest = currentLongest; } } return longest; } }