当前位置:网站首页>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;
}

边栏推荐
猜你喜欢
随机推荐
MySQL 唯一索引 UNIQUE KEY 会导致死锁?
令人愉快的 Nuxt3 教程 (一): 应用的创建与配置
下拉框数据字典应用案例
第四次培训
详解Nurbs曲线
对页码的使用总结
2017-06-11 Padavan 完美适配newifi mini【adbyby+SS+KP ...】youku L1 /小米mini
解析各种文本的年月日
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
-寻找鞍点-
【数组】arr,&arr,arr+1,&arr+1以及内存单元的占用
高效率科研神器——小软件、大能量
【DC-5靶场渗透】
C语言简单实现扫雷小游戏
MySQL 一些函数
1230: 蜂巢
Kaggle 入门(Kaggle网站使用及项目复现)
小码农的第一篇博客
嵌入式-I2C-物理电路图
Benchmark 第一篇 了解Benchmark









