LeetCode 128. 最长连续序列(Longest Consecutive Sequence)
题目描述
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 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)相关推荐
- LeetCode 128. 最长连续序列 golang
128. 最长连续序列 [困难] 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释 ...
- LeetCode 128. 最长连续序列(哈希set)
1. 题目 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例:输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1 ...
- 多看看 leetcode 128. 最长连续序列
难度:中等 频次:42 题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 解题思路: ...
- leetcode 128最长连续序列
方法一:使用快排: //排序法,时间O(nlogn),使用STL,只是验证一下思想,非正解: class Solution { public:int longestConsecutive(vector ...
- LeetCode 128.最长连续序列
题目(8¥) 题目地址:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 题解 先对数组进行排序,再遍历维护 count 和 ...
- leetcode 128. Longest Consecutive Sequence | 128. 最长连续序列(Java)
题目 https://leetcode.com/problems/longest-consecutive-sequence/ 题解 方法1:HashMap 解法,O(n^2) 如下图,假设 n=4 被 ...
- 【LeetCode】128. 最长连续序列
一.题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 二.示例 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连 ...
- LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
dsadas /**思路:找下一个排列,并且尽可能小,所以我们应该找一序列中从左边开始的"较小值"与"较大值"交换,但是为了尽可能小应该满足: 1." ...
- 128.最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 示例 1: 输入:nums = [100 ...
最新文章
- nginx 图片站点加访问权_nginx配置访问图片路径以及html静态页面的调取方
- 京东应用架构设计与治理
- JavaSE入门学习51:多线程编程(二)
- pytorch 实现线性回归
- 彻底掌握动态规划,第一节
- 4g模块注册上网 移远_通信模组企业 移远通信amp;广和通
- Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
- Java笔记-读取资源文件应该注意的问题(大文件解析、\r\n分割相关的)
- 极域电子教室软件怎么脱离控制_新疆灵感科技技术汇总~LED控制卡常见软、硬件问题...
- jni ndk_带有NDK的Android JNI应用程序
- idea改类名快捷键_IDEA使用之快捷键(default设置)
- 下载LineageOS 源码编译
- 力扣HOT100题代码
- 爱也可以量化?用4个公式表征爱情
- 求解数独的C++实现
- (力扣)LeetCode19. 删除链表的倒数第 N 个结点(C++/C语言)
- Additive smoothing
- PowerShell的参数集,可选和必选参数,位置参数,参数值,通用参数之简介
- 《程序员》10月刊推荐 LBS:签到背后的百亿市场
- 最大流matlab代码,matlab求最大流问题
热门文章
- 湖南师范大学数学与计算机学院郭水霞,湖南师范大学数学与计算机科学学院2013备考手册...
- 三国演义人物出场统计代码含义_Python分析《三国演义》人物出场次数,孔明第二,赵云第五...
- php如何判断是否为json格式,php如何判断是否为json数据(格式)
- 为什么下载mysql找不到installer文件呀_PythonMySQL系列1(安装Mysql)
- java math mod_java8 Math新增方法介绍
- MySQL中将多行查询结果合并为一行展示SQL语句书写
- vsCode切换分支git
- 跨域:Response to preflight request doesn t pass access control check: No Access-Control-Allow-Origin
- illegal utf8 encoding at (190)
- 一文看懂机器视觉工业相机与普通相机的区别