128. 最长连续序列【中等】

news/2024/9/12 0:36:30

题目

给定一个未排序的整数数组 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

解码

没做出来。不会。哭死。

class Solution {
public:int longestConsecutive(vector<int>& nums) {set<int> s ;for(int i=0;i<nums.size();i++){s.insert(nums[i]);}int max = 0,current=1;for(auto iter = s.begin(); iter != s.end(); iter++){current = 1;// 先找有没有小1的值,有就跳过if(s.find(*iter - 1) != s.end() ){continue;}while(s.find(*iter + current) != s.end() ){current++;}if(current>max){max = current;  }}return max;}
};

笔记

  • 哈希表法,可以通过有限制的进入循环,类似剪枝,来数量级级地减少时间复杂度。
  • 优化1:先通过set清洗重复数据去重;再去遍历。
  • 优化2:先判断nums[i]-1的,找到最小的数,再遍历计数。
  • C++遍历for (const int& num : nums)
  • 使用if (!num_set.count(num - 1))来查找set中指定元素。

https://www.xjx100.cn/news/344550.html

相关文章

第六章 社会主义发展及其规律

一. 单选题&#xff08;共40题&#xff0c;60分&#xff09; 1. (单选题)全部马克思主义学说的核心和理论结论是( ) A. 科学社会主义 2. (单选题)科学社会主义的直接理论来源是( ) C. 19世纪初期以圣西门、傅立叶、欧文为代表的空想社会主义 3. (单选题)社会主义实现…

Redis如何做到内存高效利用?过期key删除术解析!

大家好&#xff0c;我是小米&#xff0c;一个热衷于分享技术的小伙伴。今天我要和大家探讨一个关于 Redis 的话题&#xff1a;删除过期key。在使用 Redis 进行数据存储和缓存时&#xff0c;我们经常会遇到过期数据的处理问题。接下来&#xff0c;我将为大家介绍为什么要删除过期…

STL --- 2、容器 (8)priority_queue

目录 1、std::priority_queue的特点 2、std::priority_queue常用api 3、std::priority_queue应用场景 4、std::priority_queue实例 std::priority_queue是一个STL容器&#xff0c;它是一个优先队列&#xff0c;每个元素都有一个权值&#xff0c;优先级高的元素排在队列的前…

OpenGL之纹理

文章目录 什么是纹理加载与创建纹理stb_image.h加载并生成纹理 纹理环绕方式纹理过滤多级渐远纹理 纹理单元 什么是纹理 我们已经了解到&#xff0c;我们可以为每个顶点添加颜色来增加图形的细节&#xff0c;从而创建出有趣的图像。但是&#xff0c;如果想让图形看起来更真实&a…

dvwa靶场通关(一)

第一关&#xff1a;Brute force low 账号是admin&#xff0c;密码随便输入 用burp suite抓包 爆破得出密码为password 登录成功 Medium 中级跟low级别基本一致&#xff0c;分析源代码我们发现medium采用了符号转义&#xff0c;一定程度上防止了sql注入&#xff0c;采用暴力破…

Android 12.0默认开启无障碍服务权限和打开默认apk无障碍服务

1.概述 在12.0的系统rom定制化开发中,在第三方app开发中,需要开启无障碍服务功能,就不需要在代码中开启无障碍服务了, 为了简便就需要在系统中开启无障碍服务,来实现开启无障碍服务功能 2. 默认开启无障碍服务权限和打开默认apk无障碍服务核心代码 frameworks/base/core…

GDB调试工具

GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的命令行调试工具&#xff0c;用于调试 C、C 程序以及其他编程语言的程序。它是 GNU 项目的一部分&#xff0c;可在多个操作系统上使用&#xff0c;包括 Linux、macOS 和 Windows&#xff08;通过 MinGW 或 Cygwin&#…

Tomcat服务器、Servlet生命周期、上传下载文件、使用XHR请求数据、注解使用

文章目录 Servlet认识Tomcat服务器使用Maven创建Web项目创建Servlet探究Servlet的生命周期解读和使用HttpServletWebServlet注解详解使用POST请求完成登陆上传和下载文件下载文件上传文件 使用XHR请求数据重定向与请求转发重定向请求转发 ServletContext对象初始化参数 Servlet…