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);
    }
};
相关推荐
liuyuzhongcc12 分钟前
List 接口中的 sort 和 forEach 方法
java·数据结构·python·list
北_鱼15 分钟前
支持向量机(SVM):算法讲解与原理推导
算法·机器学习·支持向量机
计算机小白一个1 小时前
蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)
java·数据结构·蓝桥杯
MZWeiei2 小时前
PTA:运用顺序表实现多项式相加
算法
卑微的小鬼2 小时前
数据库使用B+树的原因
数据结构·b树
GISer_Jing2 小时前
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
javascript·算法·排序算法
cookies_s_s2 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法
不想编程小谭3 小时前
力扣LeetCode: 2506 统计相似字符串对的数目
c++·算法·leetcode
水蓝烟雨3 小时前
[HOT 100] 2187. 完成旅途的最少时间
算法·hot 100
醉城夜风~4 小时前
[数据结构]双链表详解
数据结构