美文网首页
O1[HashMap]128. 最长连续序列

O1[HashMap]128. 最长连续序列

作者: ColdRomantic | 来源:发表于2020-06-06 21:11 被阅读0次

    给定一个未排序的整数数组,找出最长连续序列的长度。
    要求算法的时间复杂度为 O(n)。
    示例:
    输入: [100, 4, 200, 1, 3, 2]
    输出: 4
    解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

    解题思路:
    因为要求 时间复杂度为O(n), 使用hashMap进行O1的查找。
    注意:查找的起点,判断当前数字X,是否存在X-1,存在则跳过。
    另外 hashSet 还可以去除重复的数字。

    int longestConsecutive(vector<int>& nums) {
            std::unordered_set<int> num_set; 
            for(int i:nums){
                num_set.insert(i);
            }
            int ans = 0;
            for(int x: num_set){
                // 判断是否为序列的起点
                if(!num_set.count(x-1)){
                    int count = 1;
                    while(num_set.find(++x) != num_set.end()){
                        count++;
                    }
                    ans = std::max(count, ans);
                }
            }
            return ans;
        }
    

    相关文章

      网友评论

          本文标题:O1[HashMap]128. 最长连续序列

          本文链接:https://www.haomeiwen.com/subject/iqmftktx.html