Java实现 LeetCode 128 最长连续序列
2024-10-06 15:13:59
128. 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> numsSet = new HashSet<>();
for (Integer num : nums) {
numsSet.add(num);
}
int longest = 0;
for (Integer num : nums) {
if (numsSet.remove(num)) {
// 向当前元素的左边搜索,eg: 当前为100, 搜索:99,98,97,...
int currentLongest = 1;
int current = num;
while (numsSet.remove(current - 1)) current--;
currentLongest += (num - current);
// 向当前元素的右边搜索,eg: 当前为100, 搜索:101,102,103,...
current = num;
while(numsSet.remove(current + 1)) current++;
currentLongest += (current - num);
// 搜索完后更新longest.
longest = Math.max(longest, currentLongest);
}
}
return longest;
}
}
最新文章
- phantomjs 双向认证,访问nginx,https
- SqlServer事务回滚(2)
- Java基础知识强化90:Date类之Data类中日期和毫秒相互转换
- 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
- Deep Q-Network 学习笔记(一)—— Q-Learning 学习与实现过程中碰到的一些坑
- 构建混合应用方式之WCF中继
- 使用“万能数据库查询分析器”的Windows 7、Windows 8、Windows 10的用户须知
- 可能是史上最全的机器学习和Python(包括数学)速查表
- jxl应用事例
- CentOS开启telnet服务
- MySQL大小写敏感的解决方案
- sublime text 3中安装ctags支持函数跳转,安装convertToUtf8支持中文步骤[工具篇]
- xca自签发证书解决chrome浏览器证书不可信问题记录
- CentOS下nginx+php的配置及nginx开机启动配置
- Selenium+Java自动化测试的方法
- 3-D crustal model transfer to cdl format
- mongodb的分片(2)
- Linux系统快速查找文件
- mysql 免安装版文件含义及作用
- Eclipse环境下配置Tomcat,并且把项目部署到Tomcat服务器上