当前位置:网站首页>Leetcode刷题——128. 最长连续序列
Leetcode刷题——128. 最长连续序列
2022-08-03 05:20:00 【lonelyMangoo】
题目
思路
遍历数组,用map集合记录已经遍历的数。
key表示当前数,value表示该数所在序列的长度。
有当key值不在map中时(防止重复),进行如下操作,假设当前值是num:
- 当num-1存在时,记录map中num-1的值left
- 当num+1存在时,记录map中num+1的值right
- 所以当前的长度就是left+right+1。
- 判断并保留最大值。
- 关键一步:将另外两个边界设为和第三步中一样,这样边界都确定了。并且由于循环中不会去找已经在map中存在的,所以避免了重复的情况的发生。
代码
public static int longestConsecutive(int[] nums) {
Map<Integer, Integer> map = new HashMap<>(nums.length);
int max = 0;
for (int num : nums) {
int left = 0;
int right = 0;
if (!map.containsKey(num)) {
if (map.containsKey(num - 1)) {
left = map.get(num - 1);
}
if (map.containsKey(num + 1)) {
right = map.get(num + 1);
}
int nowLen = left + right + 1;
if (nowLen > max) {
max = nowLen;
}
//这一片都处理过了
map.put(num-left,nowLen);
map.put(num+right,nowLen);
map.put(num, nowLen);
}
}
return max;
}

边栏推荐
猜你喜欢

BeanFactory和FactoryBean的区别

Django从入门到放弃三 -- cookie,session,cbv加装饰器,ajax,django中间件,redis缓存等

Sqli-labs-master shooting range 1-23 customs clearance detailed tutorial (basic)

`monorepo` 中 `hoist` 机制导致加载配置文件路径的变化

对页码的使用总结

uni-app 滚动到顶部/指定位置

web安全-sql注入漏洞

网卡软中断过高问题优化总结

docker mysql 容器中执行mysql脚本文件并解决乱码

浏览器多线程离屏渲染压缩打包方案
随机推荐
运行 npm run xxx 如何触发构建命令以及启动Node服务等功能?
MySQL 优化建议详解
解析各种文本的年月日
Length n of condensed distance matrix ‘y‘ must be a binomial coefficient
用scikit-learn学习谱聚类
用C语言来实现五子棋小游戏
【DC-4靶场渗透】
机器码介绍
图的最短路径的核心——松弛技术
动态调整web系统主题? 看这一篇就够了
软件测试 -- 入门 1 软件测试是什么?
玩转Markdown(2) —— 抽象语法树的提取与操纵
用C语言来实现扫雷小游戏
celery工作原理图
【DC-2 Range Penetration】
自定义封装组件-国际化-下拉搜索
Benchmark 第一篇 了解Benchmark
7.16(6)
request.getParameter的结果为on
【Nmap与Metasploit常用命令】