题目描述

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

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

示例:

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

解题思路

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

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

代码

 class Solution {
public:
int longestConsecutive(vector<int>& nums) {
map<int, int> m;
int maxLen = ;
for(int num: nums){
if(m.count(num)) continue;
int left = m.count(num - ) ? m[num - ] : ;
int right = m.count(num + ) ? m[num + ] : ;
int len = left + right + ;
maxLen = max(maxLen, len);
m[num - left] = len;
m[num + right] = len;
m[num] = len;
}
return maxLen;
}
};

LeetCode 128. 最长连续序列(Longest Consecutive Sequence)的更多相关文章

  1. [Swift]LeetCode128. 最长连续序列 | Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. Y ...

  2. leetcode 最长连续序列 longest consecutive sequence

    转载请注明来自souldak,微博:@evagle 题目(来自leetcode): 给你一个n个数的乱序序列,O(N)找出其中最长的连续序列的长度. 例如给你[100, 4, 200, 1, 3, 2 ...

  3. 最长连续序列(Longest Consecutive Sequence)

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  4. Java实现 LeetCode 128 最长连续序列

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

  5. 图解leetcode —— 128. 最长连续序列

    前言: 每道题附带动态示意图,提供java.python两种语言答案,力求提供leetcode最优解. 描述: 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). ...

  6. 最长连续子序列 Longest Consecutive Sequence

    2018-11-25 16:28:09 问题描述: 问题求解: 方法一.如果不要求是线性时间的话,其实可以很直观的先排序在遍历一遍就可以得到答案,但是这里明确要求是O(n)的时间复杂度,那么就给了一个 ...

  7. leetcode 128最长连续序列

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

  8. leetcode.哈希表.128最长连续序列-Java

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

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

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

随机推荐

  1. merge into 笔记

    1 IF EXISTS (SELECT 1 FROM sys.types t            join sys.schemas s on t.schema_id=s.schema_id      ...

  2. cookie 和session的关联关系

    session 1.1 数据存储,存服务器端, 浏览器解决http无状态问题的一种解决方案 登录,同一客户端访问服务端的时候,服务端都知道是这一个客户端 cookie 2.1 数据存储 , 存客户端 ...

  3. 【uoj#46】 [清华集训2014] 玄学

      题目传送门:uoj46   题意简述:要求在序列上维护一个操作间支持结合律的区间操作,查询连续一段时间内的操作对单点的作用效果,\(n \leq 10^5,m \leq 6 \times 10^5 ...

  4. MongoDB——理论及使用命令详解 数据库

    数据存储阶段 文件管理阶段(.txt  .doc .xls) 优点: 1 使用简单,展现直观 2 可以长期保存数据 3 可存储数据量比较大 缺点: 1 查找不方便, 2 容易造成数据冗余, 3 格式不 ...

  5. 程序员和IT员不能错过的网站

    前言本文收录一些值得收藏的开发相关网站. 目录一.搜索引擎二.在线课程三.在线练习四.在线工具箱五.在线编译器六.技术论坛或社区七.音乐放松一下 一.搜索引擎搜索引擎大家最熟悉不过,本没有必要列出,但 ...

  6. redis cluster(集群)模式的创建方式

    redis常用的架构有三种,单例.哨兵.集群,其他的都说过了,这里只简单介绍集群搭建. 单例最简单没什么好说的. 哨兵之前说过,该模式下有哨兵节点监视master和slave,若master宕机可自动 ...

  7. Ubuntu系统---FeiQ安装记录

    Ubuntu系统---FeiQ安装记录 linux下安装飞秋/飞鸽传书之类的软件iptux信使,可以与windows在一个局域网下聊天与传书文件,安装很简单. 首先,直接运行下面的语句即可:sudo ...

  8. P3528 [POI2011]PAT-Sticks

    题目概述 题目描述 给出若干木棍,每根木棍有特定的颜色和长度.问能否找到三条颜色不同的木棍构成一个三角形. (注意这里所说的三角形面积要严格大于\(0\)) 输入格式 第一行给出一个整数\(k\),表 ...

  9. 【django】另一种思路代替nginx 的rewrite

    需求:访问xx.com 跳转到xx.com/index 修改setting 同级别的urls.py 文件 from django.conf.urls import include, url from ...

  10. GenericJDBCException: could not execute statement 错误解决

    "message":"could not execute statement; nested exception is org.hibernate.exception.G ...