给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 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 最长连续序列相关推荐

  1. Leetcode--128. 最长连续序列

    给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...

  2. 最长连续序列—leetcode128

    给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...

  3. 20200606:最长连续序列(leetcode128)

    最长连续序列 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 本题没什么思路问题,主要是这个时间复杂度的约束.想到用set来实现. 注意先去重,也是一个想到set的角度 去重后找相邻的数,包 ...

  4. 算法--------最长连续序列(Java版本)

    题目 给定一个未排序的整数数组,找出最长连续序列的长度.要求算法的时间复杂度为 O(n).示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, ...

  5. 【LeetCode】128. 最长连续序列

    一.题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 二.示例 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连 ...

  6. leetcode 128. Longest Consecutive Sequence | 128. 最长连续序列(Java)

    题目 https://leetcode.com/problems/longest-consecutive-sequence/ 题解 方法1:HashMap 解法,O(n^2) 如下图,假设 n=4 被 ...

  7. LeetCode 128. 最长连续序列 golang

    128. 最长连续序列 [困难] 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释 ...

  8. [Leedcode][JAVA][第128题][最长连续序列][Hash]

    [问题描述][困难] 给定一个未排序的整数数组,找出最长连续序列的长度.要求算法的时间复杂度为 O(n).示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 ...

  9. LeetCode 298. 二叉树最长连续序列(自顶向下)

    文章目录 1. 题目 2. 解题 1. 题目 给你一棵指定的二叉树,请你计算它最长连续序列路径的长度. 该路径,可以是从某个初始结点到树中任意结点,通过「父 - 子」关系连接而产生的任意路径. 这个最 ...

最新文章

  1. eclipse显示服务器地址,eclipse怎样添加服务器地址
  2. 绘制业务流程图:流程图绘制工具
  3. java输入键盘_java键盘输入
  4. uCOS任务堆栈的深入分析(转)
  5. 使用Classycle验证类/包依赖关系
  6. php 高级搜索下拉框,高级搜索页面advancedsearch.php调用自定义字段
  7. TFS(Team Foundation Server)敏捷使用教程
  8. shell脚本面试题
  9. Kali Linux 网络扫描秘籍 第四章 指纹识别(二)
  10. NSRegularExpression iOS自带的正则表达式
  11. Scrum立会报告+燃尽图(Final阶段第四次)
  12. python程序员工作总结_2016年终总结--一个Python程序猿的跨界之旅
  13. C++ 单例模式 模版类(Meyers‘ Singleton)
  14. Step7 V5.6 win10版本安装包下载
  15. windows优化大师怎么用_必读:我们赖以办公、游戏设计用的电脑该如何正确保养维护...
  16. Matlab中fit函数的局限以及其解决方案
  17. LDPC码的EXIT图
  18. eclipse源码中文注释乱码问题解决方法
  19. A股股票程序化自动交易量化软件
  20. 人工智能专业数据结构课程论文-《浅谈递归算法及其在人工智能方面的应用》

热门文章

  1. 解密ControlRotation与ActorRotation
  2. asterisk几个通用函数说明
  3. Win CE下编译选项介绍
  4. hashmap 遍历_别慌,送你21 个面试官必问HashMap考点
  5. 【转】WPF XAML X名称空间详解
  6. 【转】ABP源码分析三十八: ABP.Web.Api.OData
  7. 【转】ELK是什么能做什么怎么做
  8. 【转】10分钟精通SharePoint - VS开发模板
  9. can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法
  10. sqoop(数据迁移工具)-安装-学习