1. 题目

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-consecutive-sequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 哈希set解题

  • 先将所有的数插入哈希set
  • 遍历每个数字,如果num-1不在set中(即num是起点,才开始计算长度)
  • 循环查找num+1在set中吗?长度+1
  • 更新最大的长度
    由于哈希的插入和查找是O(1)的时间复杂度,所以本题时间复杂度为O(n)
class Solution {public:int longestConsecutive(vector<int>& nums) {unordered_set<int> s;int maxlen = 0, curlen = 0, n;for(int i = 0; i < nums.size(); ++i){s.insert(nums[i]);}for(int i = 0; i < nums.size(); ++i){if(s.find(nums[i]-1) == s.end())//nums[i]是连续数字的起点{curlen = 1;n = nums[i];while(s.find(n+1) != s.end())++curlen, ++n;}maxlen = max(maxlen,curlen);}return maxlen;}
};

LeetCode 128. 最长连续序列(哈希set)相关推荐

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

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

  2. LeetCode 128. 最长连续序列(Longest Consecutive Sequence)

    题目描述 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 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. Dubbo 3.0 预览版解读,6到飞起~
  2. 《闪耀暖暖》可增加“心之门”爆闪耀的方法?网友:巧合罢了
  3. go 安装 mysql 链接驱动
  4. 第三次学JAVA再学不好就吃翔(part1)--初识JAVA
  5. leetcode 滑动窗口小结 (一)
  6. 关于软件工程的那些事儿————《人·绩效·职业道德》和《一个程序员的生命周期》读后感...
  7. 人人都在谈的图数据库到底是个啥?
  8. lambda表达式的语法精简
  9. 用R将图片转为字符画
  10. MOSS 2007 Search系列
  11. cisco 交换机 获取 转发表_看完这份1113页的TCP/IP协议+路由与交换机,成功上岸字节跳动...
  12. linux cd系统下载地址,Mandriva 2008.0 正式版 CD、DVD HTTP下载地址
  13. C++ 罗马数字转整数
  14. java与es8实战之一:以builder pattern开篇
  15. 腾讯微服务框架 Tars 的 Go 性能提升之路
  16. 长铗、孔剑平、何斌等17位大咖齐聚,一部区块链创业者的“燃点”
  17. 【黑金动力社区】【原创博文集锦】《液晶驱动与GUI 基础教程》导读
  18. ASCII文件与二进制文件
  19. 微信小程序开发入门与实战(三种通信方法)
  20. 微信小程序高度设置为100%

热门文章

  1. 命令行 java文本编辑工具 重载 内存区域 栈 堆
  2. mysql raid_DBA们应该知道的RAID卡知识_MySQL
  3. cocos2dx 3.4 截图代码
  4. jeecms附件标签用法
  5. 以下题目需要当场编写实现,,答案自己写
  6. Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
  7. 【GIT 基础篇六】分支管理(创建与合并)
  8. Orchard商城模块(Commerce)设计与后台部分
  9. Bootloader启动过程
  10. Asp.net 编码函数