LeetCode 128 最长连续序列

Posted ambition-hhn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 128 最长连续序列相关的知识,希望对你有一定的参考价值。

本题要求是给出一个无序数组,在数组种找出最长的连续序列,时间复杂度是O(n)。这道题并不难,主要是接触了一个新的数据结构,用哈希表实现的set,查找和插入可以在几乎O(1)的时间完成。遍历整个数组,如果在set种找到比当前数字小1的就跳过(该数不可能是连续序列中最小的数),如果没有找到,就从这个数开始一直向后找比它大1的数,直到找不到停止。统计出最长的连续序列。

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        int ans = 0;
        unordered_set<int> st;
        for(auto i :nums)
        {
            st.insert(i);
        }
        for(auto i : nums)
        if(!st.count(i-1))
        {
            int cur=i;
            int cnt=1;
            while(st.count(cur+1))
            {
                cur++;
                cnt++;
            }
            ans=max(cnt,ans);
        }
        return ans;
    }
};

以上是关于LeetCode 128 最长连续序列的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列c++/java详细题解

LeetCode第128题—最长连续序列—Python实现

leetcode 128:最长连续序列

LeetCode 128. 最长连续序列