
最长的连续元素序列长度(哈希表)
发布日期:2021-05-07 23:43:46
浏览次数:12
分类:精选文章
本文共 1036 字,大约阅读时间需要 3 分钟。
题目描述
给定一个无序的整数类型数组,求最长的连续元素序列的长度。 例如: 给出的数组为[1000, 4, 2000, 1, 3, 2],
最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4 你需要给出时间复杂度在O(n)之内的算法
思路
- 第一反应使用哈希表,然后是想到map,但题目要求时间复杂度O(n),map是有序的所以要用无序的,又输入是vector,所以使用同样是基于hash表的unorder_set
- 接着只要遍历查找每个数的+1,-1的值是否存在,记录序列长度
- 每次将序列长度更新为最长的
- 哈希函数的使用方法
class Solution { public: /** * * @param num int整型vector * @return int整型 */ int longestConsecutive(vector & num) { // write code here // 使用哈希表 unordered_set uset(num.begin(), num.end()); int res = 0; for(auto item:num){ int left = item - 1; int right = item + 1; int cnt = 1; // 遍历找left,left每次减一 while(uset.count(left) != 0){ uset.erase(left--); cnt++; } while(uset.count(right) != 0){ uset.erase(right++); cnt++; } // 每次更新最长的序列 res = max(res, cnt); } return res; }};
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月24日 09时35分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python机器学习算法基础概述
2021-05-08
关于OCR的一些有用的技术博客文章链接
2021-05-08
jquery中用on事件委托的方式绑定事件
2021-05-08
蓝桥杯 2016c/c++A组 方格填数
2021-05-08
L1-039 古风排版 (20分)
2021-05-08
L1-009 N个数求和 (20 分)
2021-05-08
L2-031 深入虎穴 (25 分)
2021-05-08
Unity之PlayerPrefs
2021-05-08
简单的xml读取存储方法(未优化)
2021-05-08
Flower
2021-05-08
Nginx---惊群
2021-05-08
Redis未授权漏洞
2021-05-08
供应ASTM D3475认证丨ASTM D3475防儿童包装测试费用
2021-05-08
2种解法 - 获取一条直线上最多的点数
2021-05-08
项目中常用的审计类型概述
2021-05-08
新生儿不建议吃鱼肝油,这些你知道吗
2021-05-08
新生儿哭是因为什么
2021-05-08
基础知识
2021-05-08