128. 最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n)的算法解决此问题。

示例 1:

复制代码
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

复制代码
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109
cpp 复制代码
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        int n = nums.size();
        if(n==0)
            return 0;
        if(n==1)
            return 1;
        sort(nums.begin(),nums.end());
        int l=0;
        int r=l+1;
        int mx=0;
        int eql=0;
        while(r<n)
        {
            if( nums[r-1]+1==nums[r])
            {
            }
            else if(nums[r-1]==nums[r])
            {
                eql+=1;
            }
            else
            {
                mx=max(r-l-eql,mx);
                eql=0;
                l=r;
            }
            r++;
        }
        return max(r-l-eql,mx);
    }
};
相关推荐
QuZero21 小时前
ReentrantLock principle
java·算法
m0_7167652321 小时前
数据结构--顺序表的插入、删除、查找详解
c语言·开发语言·数据结构·c++·学习·算法·visual studio
Jasmine_llq21 小时前
《B3954 [GESP202403 二级] 乘法问题》
算法·顺序输入输出算法·布尔标记算法·累乘算法·循环迭代算法·阈值判断算法·条件分支输出算法
Halo_tjn21 小时前
Java 抽象类 知识点
java·开发语言·算法
say_fall21 小时前
滑动窗口算法
数据结构·c++·算法
落羽的落羽21 小时前
【算法札记】练习 | Week1
linux·服务器·c++·人工智能·python·算法·机器学习
qq_4542450321 小时前
图数据标准化与智能去重框架:设计与实现解析
数据结构·架构·c#·图论
c++圈来了个新人21 小时前
C++类和对象(上)
c语言·开发语言·数据结构·c++·考研
人道领域21 小时前
【LeetCode刷题日记】15.三数之和(梦破碎的地方)
算法·leetcode·面试
️是7821 小时前
信息奥赛一本通(4005:【GESP2306一级】时间规划)
数据结构·c++·算法