博客
关于我
最长的连续元素序列长度(哈希表)
阅读量:368 次
发布时间:2019-03-04

本文共 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; }};

在这里插入图片描述

转载地址:http://yfdg.baihongyu.com/

你可能感兴趣的文章
mysql给账号授权相关功能 | 表、视图等
查看>>
MySQL缓存使用率超过80%的解决方法
查看>>
Mysql缓存调优的基本知识(附Demo)
查看>>
mysql编写存储过程
查看>>
mysql网站打开慢问题排查&数据库优化
查看>>
mysql网络部分代码
查看>>
mysql联合索引 where_mysql联合索引与Where子句优化浅析
查看>>
mysql联合索引的最左前缀匹配原则
查看>>
MySQL聚簇索引
查看>>
mysql自动化同步校验_Shell: 分享MySQL数据同步+主从复制自动化脚本_20190313_七侠镇莫尛貝...
查看>>
Mysql自增id理解
查看>>
mysql自增id超大问题查询
查看>>
MySQL自定义变量?学不废不收费
查看>>
MySQL自带information_schema数据库使用
查看>>
MySQL获取分组后的TOP 1和TOP N记录
查看>>
mysql虚拟列表_动态网页制作-官方版合集下载-多特
查看>>
MySQL蜜罐反制获取攻击者信息
查看>>
Mysql表创建外键报错
查看>>
mysql表格调取数据库信息_MySQL™ 参考手册(获取有关数据库和表的信息)
查看>>
mysql表检查分析优化
查看>>