LeetCode 128. 最长连续序列(哈希set)
1. 题目
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-consecutive-sequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 哈希set解题
- 先将所有的数插入哈希set
- 遍历每个数字,如果num-1不在set中(即num是起点,才开始计算长度)
- 循环查找num+1在set中吗?长度+1
- 更新最大的长度
由于哈希的插入和查找是O(1)的时间复杂度,所以本题时间复杂度为O(n)
class Solution {public:int longestConsecutive(vector<int>& nums) {unordered_set<int> s;int maxlen = 0, curlen = 0, n;for(int i = 0; i < nums.size(); ++i){s.insert(nums[i]);}for(int i = 0; i < nums.size(); ++i){if(s.find(nums[i]-1) == s.end())//nums[i]是连续数字的起点{curlen = 1;n = nums[i];while(s.find(n+1) != s.end())++curlen, ++n;}maxlen = max(maxlen,curlen);}return maxlen;}
};
LeetCode 128. 最长连续序列(哈希set)相关推荐
- LeetCode 128. 最长连续序列 golang
128. 最长连续序列 [困难] 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释 ...
- LeetCode 128. 最长连续序列(Longest Consecutive Sequence)
题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1 ...
- 多看看 leetcode 128. 最长连续序列
难度:中等 频次:42 题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 解题思路: ...
- leetcode 128最长连续序列
方法一:使用快排: //排序法,时间O(nlogn),使用STL,只是验证一下思想,非正解: class Solution { public:int longestConsecutive(vector ...
- LeetCode 128.最长连续序列
题目(8¥) 题目地址:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 题解 先对数组进行排序,再遍历维护 count 和 ...
- leetcode 128. Longest Consecutive Sequence | 128. 最长连续序列(Java)
题目 https://leetcode.com/problems/longest-consecutive-sequence/ 题解 方法1:HashMap 解法,O(n^2) 如下图,假设 n=4 被 ...
- 【LeetCode】128. 最长连续序列
一.题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 二.示例 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连 ...
- LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...
- 128.最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 示例 1: 输入:nums = [100 ...
最新文章
- Dubbo 3.0 预览版解读,6到飞起~
- 《闪耀暖暖》可增加“心之门”爆闪耀的方法?网友:巧合罢了
- go 安装 mysql 链接驱动
- 第三次学JAVA再学不好就吃翔(part1)--初识JAVA
- leetcode 滑动窗口小结 (一)
- 关于软件工程的那些事儿————《人·绩效·职业道德》和《一个程序员的生命周期》读后感...
- 人人都在谈的图数据库到底是个啥?
- lambda表达式的语法精简
- 用R将图片转为字符画
- MOSS 2007 Search系列
- cisco 交换机 获取 转发表_看完这份1113页的TCP/IP协议+路由与交换机,成功上岸字节跳动...
- linux cd系统下载地址,Mandriva 2008.0 正式版 CD、DVD HTTP下载地址
- C++ 罗马数字转整数
- java与es8实战之一:以builder pattern开篇
- 腾讯微服务框架 Tars 的 Go 性能提升之路
- 长铗、孔剑平、何斌等17位大咖齐聚,一部区块链创业者的“燃点”
- 【黑金动力社区】【原创博文集锦】《液晶驱动与GUI 基础教程》导读
- ASCII文件与二进制文件
- 微信小程序开发入门与实战(三种通信方法)
- 微信小程序高度设置为100%
热门文章
- 命令行 java文本编辑工具 重载 内存区域 栈 堆
- mysql raid_DBA们应该知道的RAID卡知识_MySQL
- cocos2dx 3.4 截图代码
- jeecms附件标签用法
- 以下题目需要当场编写实现,,答案自己写
- Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
- 【GIT 基础篇六】分支管理(创建与合并)
- Orchard商城模块(Commerce)设计与后台部分
- Bootloader启动过程
- Asp.net 编码函数