题目描述

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

要求算法的时间复杂度为 O(n)

示例:

输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

解题思路

利用并查集的思想,构造一个map记录数组中以每个数所在的最长连续序列长度。每次遍历到一个数时,首先检查map中是否存在该数,若存在直接跳过,否则作如下更新操作:

找到左右相邻数字是否在map中,若存在则分别记录他们所在的最长连续序列长度,并更新当前的最长连续序列长度,然后把长度更新到新序列左右端点和此数对应的map中。

代码

 1 class Solution {
 2 public:
 3     int longestConsecutive(vector<int>& nums) {
 4         map<int, int> m;
 5         int maxLen = 0;
 6         for(int num: nums){
 7             if(m.count(num)) continue;
 8             int left = m.count(num - 1) ? m[num - 1] : 0;
 9             int right = m.count(num + 1) ? m[num + 1] : 0;
10             int len = left + right + 1;
11             maxLen = max(maxLen, len);
12             m[num - left] = len;
13             m[num + right] = len;
14             m[num] = len;
15         }
16         return maxLen;
17     }
18 };

转载于:https://www.cnblogs.com/wmx24/p/9725199.html

LeetCode 128. 最长连续序列(Longest Consecutive Sequence)相关推荐

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

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

  2. LeetCode 128. 最长连续序列(哈希set)

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

  3. 多看看 leetcode 128. 最长连续序列

    难度:中等 频次:42 题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 解题思路: ...

  4. leetcode 128最长连续序列

    方法一:使用快排: //排序法,时间O(nlogn),使用STL,只是验证一下思想,非正解: class Solution { public:int longestConsecutive(vector ...

  5. LeetCode 128.最长连续序列

    题目(8¥) 题目地址:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 题解 先对数组进行排序,再遍历维护 count 和 ...

  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. 最长连续序列

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

  8. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)

    dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...

  9. 128.最长连续序列

    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 示例 1: 输入:nums = [100 ...

最新文章

  1. nginx 图片站点加访问权_nginx配置访问图片路径以及html静态页面的调取方
  2. 京东应用架构设计与治理
  3. JavaSE入门学习51:多线程编程(二)
  4. pytorch 实现线性回归
  5. 彻底掌握动态规划,第一节
  6. 4g模块注册上网 移远_通信模组企业 移远通信amp;广和通
  7. Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
  8. Java笔记-读取资源文件应该注意的问题(大文件解析、\r\n分割相关的)
  9. 极域电子教室软件怎么脱离控制_新疆灵感科技技术汇总~LED控制卡常见软、硬件问题...
  10. jni ndk_带有NDK的Android JNI应用程序
  11. idea改类名快捷键_IDEA使用之快捷键(default设置)
  12. 下载LineageOS 源码编译
  13. 力扣HOT100题代码
  14. 爱也可以量化?用4个公式表征爱情
  15. 求解数独的C++实现
  16. (力扣)LeetCode19. 删除链表的倒数第 N 个结点(C++/C语言)
  17. Additive smoothing
  18. PowerShell的参数集,可选和必选参数,位置参数,参数值,通用参数之简介
  19. 《程序员》10月刊推荐 LBS:签到背后的百亿市场
  20. 最大流matlab代码,matlab求最大流问题

热门文章

  1. 湖南师范大学数学与计算机学院郭水霞,湖南师范大学数学与计算机科学学院2013备考手册...
  2. 三国演义人物出场统计代码含义_Python分析《三国演义》人物出场次数,孔明第二,赵云第五...
  3. php如何判断是否为json格式,php如何判断是否为json数据(格式)
  4. 为什么下载mysql找不到installer文件呀_PythonMySQL系列1(安装Mysql)
  5. java math mod_java8 Math新增方法介绍
  6. MySQL中将多行查询结果合并为一行展示SQL语句书写
  7. vsCode切换分支git
  8. 跨域:Response to preflight request doesn t pass access control check: No Access-Control-Allow-Origin
  9. illegal utf8 encoding at (190)
  10. 一文看懂机器视觉工业相机与普通相机的区别