1. 程式人生 > 實用技巧 >128. 最長連續序列-set/map-困難

128. 最長連續序列-set/map-困難

問題描述

給定一個未排序的整數陣列,找出最長連續序列的長度。

要求演算法的時間複雜度為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; } }