当前位置: 首页 > article >正文

128.最长连续序列

  • 首先,数组 nums 是有重复元素的,故使用哈希的时候,应使用哈希集合 set 。
  • 判断一个数字 num 是否是序列的起点
    • num -1 如果存在 set 中,说明 num 不是序列的起点,而是延续
    • num -1 如果不存在 set 中,说明 num 是序列的启点
  • 如果 num 是起点
    • 那么循环检测 num+1,num+2,... ,是否存在 set 中,直到找不到为止。
    • 在循环过程中,用 currentStreak 记录当前连续序列的长度。
  • 每对一个 num 进行循环检测后,更新 currentStreak 的值。

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        // 哈希集合存储数组元素
        unordered_set<int> num_set;
        for(const int& num : nums){
            num_set.insert(num);
        }

        int longestStreak = 0;

        for (const int& num : num_set){
            if(!num_set.count(num-1)){  //判断起点
                int currentNum = num;
                int currentStreak = 1;

                // 循环检测连续数字
                while (num_set.count(currentNum+1)){
                    currentNum += 1;
                    currentStreak += 1;
                }
                //更新
                longestStreak = max(longestStreak, currentStreak);
            }
        }
        return longestStreak;
    }
};


http://www.kler.cn/a/507585.html

相关文章:

  • MySQL程序之:使用类似URI的字符串或键值对连接到服务器
  • 警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
  • MySQL(七)MySQL和Oracle、PostgreSQL的区别
  • Linux的常用命令(三)
  • 【后端面试总结】tls中.crt和.key的关系
  • CV(10)--目标检测
  • Web3D交互展示:重塑产品展示的新维度
  • ESP8266 AP模式 网页配网 arduino ide
  • vue3学习日记8 - 一级分类
  • Kivy App开发之UX控件Spinner选择框
  • qt信号槽复杂参数传递,以结构体为例
  • 递归40题!再见递归
  • React 中hooks之useReducer使用场景和方法总结
  • python学opencv|读取图像(三十六)(反)零值处理
  • springboot 利用html模版导出word
  • JavaScript笔记基础篇03——函数
  • HarmonyOS使用Grid网格实现计算器功能实现
  • AndroidStudio升级到2024.2.2项目AGP升级8.8.0版本记录
  • MyBatis(三)代理Dao方式的CRUD操作
  • uniapp 微信小程序 金额展示套餐
  • 【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
  • 算法(蓝桥杯)贪心算法5——删数问题的解题思路
  • Titans Learning to Memorize at Test Time
  • AI编程工具使用技巧——通义灵码
  • 《火焰烟雾检测开源神经网络模型:智能防火的科技护盾》
  • Python调用go语言编译的库