当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
dataframe插入一列
-飞机大战-
Delightful Nuxt3 Tutorial (1): Application Creation and Configuration
【myPow,2次幂,3次幂..代码实现】
Length n of condensed distance matrix ‘y‘ must be a binomial coefficient
解析各种文本的年月日
三角形个数
对页码的使用总结
【三子棋】7.25
浏览器多线程离屏渲染压缩打包方案
详解背包问题(DP分支)
HarmonyOS应用开发第一次培训
动态调整web系统主题? 看这一篇就够了
A-B数对问题|UPC-Count Interval|洛谷-P1102A-B数对
私有变量(private) 【详细+易懂】
`monorepo` 中 `hoist` 机制导致加载配置文件路径的变化
玩转Markdown(2) —— 抽象语法树的提取与操纵
Flask,1-2
MySQL 索引详解和什么时候创建索引什么时候不适用索引
【命令执行与中间件漏洞】