码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 128 最长连续序列

时间:2020-06-06 13:14:56      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:不难   auto   max   时间   red   插入   停止   ges   int   

本题要求是给出一个无序数组,在数组种找出最长的连续序列,时间复杂度是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 最长连续序列

标签:不难   auto   max   时间   red   插入   停止   ges   int   

原文地址:https://www.cnblogs.com/ambition-hhn/p/13054149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!