leetcode.哈希表.128最长连续序列-Java
2024-10-07 17:01:23
1. 具体题目
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
2. 思路分析
由于题目中不要求连续序列中的元素在原数组中是有序的,对于一个数只要查找数组中是否有与其相邻的数即可,所以考虑将元素存入HashSet中,实现 O(1)时间的查询。
3. 代码
public int longestConsecutive(int[] nums) {
HashSet set = new HashSet();
int longest = 0;
for(int num : nums){
set.add(num);
}
for(int num : nums){
if(set.remove(num)){
int count = 1;
int current = num;
while(set.remove(--current)) count++;
current = num;
while(set.remove(++current)) count++;
longest = Math.max(longest, count);
}
}
return longest;
}
最新文章
- SQL Server 通过备份文件初始化复制
- JS中的进制转换以及作用
- redis事务
- 移动 Web 开发技巧之(后续)
- 桂电在linux、Mac OS环境下使用出校器(支持2.14)
- 我的CSS样式记事本(1)
- Yii与表单交互的三种模式2
- 安卓开发28:自定义View类
- 用html5调取谷歌地图获取位置
- GDAL1.11版本对SHP文件索引加速测试
- web服务器软件
- java文件转发
- Windows Phone开发手记-WinRT下自定义圆形ItemsControl
- django -- verbose_name的对数据库层面的影响
- Spring是什么、spring容器、Spring三大核心思想DI(依赖注入)、IOC(控制反转)、AOP(面向切面编程)
- redis4.0.10安装与常用命令
- PAT 1094 The Largest Generation[bfs][一般]
- Android之MVC模式
- CSU-ACM2018暑期训练7-贪心
- C#练习DataReader
热门文章
- new运算符工作原理(new运算符的伪码实现)
- GDB can't continue if no space left
- UVA 212 Use of Hospital Facilities
- 调用WPF程序时传入参数
- Maven远程仓库地址
- MATLAB图像uint8,uint16,double, rgb转灰度解释
- Python之小测试:用正则表达式写一个小爬虫用于保存贴吧里的所有图片
- 移动端(视口(meta),像素比,二倍图(图片,背景图,精灵图),css初始化(normalize.css),特殊样式,常见屏幕尺寸)
- Codeforces 19E&;BZOJ 4424 Fairy(好题)
- 异步ajax请求数据处理