xinyu04

导航

LeetCode 128 Longest Consecutive Sequence

Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

You must write an algorithm that runs in \(O(n)\) time.

Solution

既然不能排序,那就用 \(set\) 将元素全部存进去。从所有可能序列中的最小开始遍历,逐次递增,然后更新最大值

点击查看代码
class Solution {
private:
    unordered_set<int> s;
    int ans=0;
public:
    int longestConsecutive(vector<int>& nums) {
        for(auto ele:nums){
            s.insert(ele);
        }
        for(auto ele:nums){
            int cur = ele;
            if(!s.count(cur-1)){
                int cnt=1;
                while(s.count(cur+1)){
                    cur++;cnt++;
                }
                ans=max(ans, cnt);
            }
        }
        return ans;
    }
};

posted on 2022-09-17 04:08  Blackzxy  阅读(3)  评论(0编辑  收藏  举报