leetcode128 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为4
思路:map记录某个连续序列端点的最大长度。
对于数字i,如果已经存在,跳过。
否则:
如果有端点i-1和i+1,合并。
如果只有一边,和本数字合并。
如果相邻数字无端点,自己的长度是1
(你也可以合并的时候移除报废的端点,但是更慢)
class Solution {public int longestConsecutive(int[] nums) {if(nums.length==0)return 0;Map<Integer, Integer> map=new HashMap<>();int ans=1;for(int i:nums){if(!map.containsKey(i)){if(map.containsKey(i-1) && map.containsKey(i+1)){int len=map.get(i-1)+map.get(i+1)+1;if(ans<len)ans=len;map.put(i-1-map.get(i-1)+1,len);map.put(i+1+map.get(i+1)-1,len);map.put(i,-1);}else if(map.containsKey(i-1)){int len=map.get(i-1)+1;if(ans<len)ans=len;map.put(i-1-map.get(i-1)+1,len);map.put(i,len);}else if(map.containsKey(i+1)){int len=map.get(i+1)+1;if(ans<len)ans=len;map.put(i+1+map.get(i+1)-1,len);map.put(i,len);}else{map.put(i,1);}}}return ans;}
}
我真的不知道还能怎么优化了。
一些小优化基本没用,我试过了,如果有大变动的做法可以告诉我哈。
leetcode128 最长连续序列相关推荐
- Leetcode--128. 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...
- 最长连续序列—leetcode128
给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...
- 20200606:最长连续序列(leetcode128)
最长连续序列 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 本题没什么思路问题,主要是这个时间复杂度的约束.想到用set来实现. 注意先去重,也是一个想到set的角度 去重后找相邻的数,包 ...
- 算法--------最长连续序列(Java版本)
题目 给定一个未排序的整数数组,找出最长连续序列的长度.要求算法的时间复杂度为 O(n).示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...
- 【LeetCode】128. 最长连续序列
一.题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 二.示例 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连 ...
- leetcode 128. Longest Consecutive Sequence | 128. 最长连续序列(Java)
题目 https://leetcode.com/problems/longest-consecutive-sequence/ 题解 方法1:HashMap 解法,O(n^2) 如下图,假设 n=4 被 ...
- LeetCode 128. 最长连续序列 golang
128. 最长连续序列 [困难] 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释 ...
- [Leedcode][JAVA][第128题][最长连续序列][Hash]
[问题描述][困难] 给定一个未排序的整数数组,找出最长连续序列的长度.要求算法的时间复杂度为 O(n).示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 ...
- LeetCode 298. 二叉树最长连续序列(自顶向下)
文章目录 1. 题目 2. 解题 1. 题目 给你一棵指定的二叉树,请你计算它最长连续序列路径的长度. 该路径,可以是从某个初始结点到树中任意结点,通过「父 - 子」关系连接而产生的任意路径. 这个最 ...
最新文章
- eclipse显示服务器地址,eclipse怎样添加服务器地址
- 绘制业务流程图:流程图绘制工具
- java输入键盘_java键盘输入
- uCOS任务堆栈的深入分析(转)
- 使用Classycle验证类/包依赖关系
- php 高级搜索下拉框,高级搜索页面advancedsearch.php调用自定义字段
- TFS(Team Foundation Server)敏捷使用教程
- shell脚本面试题
- Kali Linux 网络扫描秘籍 第四章 指纹识别(二)
- NSRegularExpression iOS自带的正则表达式
- Scrum立会报告+燃尽图(Final阶段第四次)
- python程序员工作总结_2016年终总结--一个Python程序猿的跨界之旅
- C++ 单例模式 模版类(Meyers‘ Singleton)
- Step7 V5.6 win10版本安装包下载
- windows优化大师怎么用_必读:我们赖以办公、游戏设计用的电脑该如何正确保养维护...
- Matlab中fit函数的局限以及其解决方案
- LDPC码的EXIT图
- eclipse源码中文注释乱码问题解决方法
- A股股票程序化自动交易量化软件
- 人工智能专业数据结构课程论文-《浅谈递归算法及其在人工智能方面的应用》