当前位置:网站首页>最长连续序列[扩散法+空间换时间]
最长连续序列[扩散法+空间换时间]
2022-06-24 21:17:00 【REN_林森】
扩散法+空间换时间
前言
空间换时间核心是为了降低时间复杂度,但有时候是解题的关键,毕竟时间有限(先双指针一样)。
典型的空间换时间就是数组/数组hash/hash。
本文通过最长连续序列来感受空间换时间,并练习扩散法。
一、最长连续序列

二、扩散法+空间换时间
package everyday.medium;
import java.util.HashSet;
import java.util.Set;
// 最长连续序列
public class LongestConsecutive {
/* target:找到里面最长连续数字,如果排个序,直接O(n)遍历一遍记录到最长即可。 但是时间复杂度要求O(n),所以只能空间换时间,先用hash存起来,方便后面快速查找(以扩散法查找)。 */
public int longestConsecutive(int[] nums) {
// 特殊情况,特殊处理。
if (0 == nums.length) return 0;
Set<Integer> set = new HashSet<>();
// 准备工作,记录所有元素,并赋初值为1,表示连续个数1。
for (int n : nums) if (!set.contains(n)) set.add(n);
// 遍历nums,求相邻的元素的总连续度。
int ans = 1;
// 扩散法,每个值最多被访问两次,一次有,一次无。
for (int n : nums) {
// 没有用过的数字,才从两边扩散开来。
if (set.contains(n)) {
// 开始往两边扩散,扩散法。
int len = 1;
int left = n, right = n;
while (set.contains(--left)) {
++len;
set.remove(left);
}
while (set.contains(++right)) {
++len;
set.remove(right);
}
// 取每次能扩散的最大长度。
ans = Math.max(ans, len);
}
}
return ans;
}
}
总结
1)空间换时间
2)扩散法
参考文献
[1] LeetCode 最长连续序列
边栏推荐
- Bi-sql top
- Go language operators (under Lesson 8)
- Bi-sql - join
- Deep learning LSTM model for stock analysis and prediction
- ImageView shows network pictures
- IPC机制
- 【直播回顾】2022腾讯云未来社区城市运营方招募会暨SaaS 2.0新品发布会!
- Introduction to bi-sql wildcards
- 腾讯完成全面上云 打造国内最大云原生实践
- Audio PCM data calculates sound decibel value to realize simple VAD function
猜你喜欢

"One good programmer is worth five ordinary programmers!"

Bi-sql top

Heavyweight: the domestic ide was released, developed by Alibaba, and is completely open source! (high performance + high customization)

汇编语言(2)基础知识-debug

Powerbi - for you who are learning

4 years of working experience, and you can't tell the five communication modes between multithreads. Can you believe it?

1. package your own scaffold 2 Create code module

pbcms添加循环数字标签

Library management system code source code (php+css+js+mysql) complete code source code

Fan benefits, JVM manual (including PDF)
随机推荐
matlab 取整
Programmer: did you spend all your savings to buy a house in Shenzhen? Or return to Changsha to live a "surplus" life?
Assembly language (4) function transfer parameters
VB 学习笔记
腾讯搬家了!
AUTOCAD——两种延伸方式
[practical series] full WiFi coverage at home
汇编语言(3)16位汇编基础框架与加减循环
Linux64Bit下安装MySQL5.6-不能修改root密码
RedisTemplate操作Redis,这一篇文章就够了(一)[通俗易懂]
Texture enhancement
[live review] 2022 Tencent cloud future community city operator recruitment conference and SaaS 2.0 new product launch!
Bi skill - judge 0 and null
Reverse ordinal number by merge sort
Boutique enterprise class powerbi application pipeline deployment
TC对象结构和简称
Abnova丨CSV 磁珠中英文说明
通达信哪个开户更安全,更好点
联想童夫尧:11倍于大势,我们一路攻城拔寨
Activity lifecycle