最长连续序列(区别于LIS)考察集合的查找

Posted C_YCBX Py_YYDS

tags:

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

文章目录

题目

在这里插入图片描述

题目解析

  • 题目解析:首先要读懂题,由于不是子序列,而是序列,那么不会要求从左到右的顺序。
  • 做题步骤:
  1. 通过set将原数据去重。
  2. 通过遍历set找出连续数据的首元素。(通过查找num-1是否存在于集合中)
  3. 根据连续数据的首元素来更新这个连续数据的长度
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int>Set;
        for(int num:nums)Set.insert(num);
        int res = 0;
        for(auto num:Set){
            //如果集合中找不到num-1,则该数据为连续数字的首元素
            if(!Set.count(num-1)){
                //连续增加计数
                int l = 1;
                while(Set.count(num+l))l++;
                res = max(res,l);
            }
        }
        return res;
    }
};

以上是关于最长连续序列(区别于LIS)考察集合的查找的主要内容,如果未能解决你的问题,请参考以下文章

动态规划-最长公共子序列

最长递增子序列的个数--了解两种实现LIS算法的区别

「模板」最长不下降子序列 LIS

UVALive 4976 Defense Lines ——(LIS变形)

Lintcode--010(最长上升子序列)

最长上升子序列(模板)