最长连续序列

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

思路与算法

  1. 本题没什么思路问题,主要是这个时间复杂度的约束。想到用set来实现。
  2. 注意先去重,也是一个想到set的角度
  3. 去重后找相邻的数,包括比当前数大的和比当前数小的。
  4. 先看当前set中是否包含num-1,不包含则开始往上找,从num+1开始找,计数君计数即可。同理先确认不包含num+1,往下找也可以。

代码实现

class Solution {public int longestConsecutive(int[] nums) {int res = 0;// 使用set去重HashSet<Integer> nums_set = new HashSet<>();for (int num : nums) {nums_set.add(num);}// 再次遍历,寻找比当前数字小1的数字for (int num : nums_set) {// 如果当前set中不包含num-1这个数字if (!nums_set.contains(num - 1)) {// 则获取当前数字,并且将计数君加1int curNum = num;int count = 0;// 如果不包含num-1,则从num+1开始找,并用计数君计数即可。while (nums_set.contains(curNum)) {curNum++;count++;}// 获取最大计数君res = Math.max(res,count);}}return res;}
}

复杂度分析

满足O(N)的时间复杂度要求。

20200606:最长连续序列(leetcode128)相关推荐

  1. 最长连续序列—leetcode128

    给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 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. Leetcode--128. 最长连续序列

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

  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. 主流Java报表工具的比较
  2. 大厂首发!java敏捷开发模式面试题
  3. nature machine intelligence
  4. 第八章 shell学习之循环和结构化命令
  5. SHA1 - Java加密与安全
  6. ASP.NET Core Cookie SameSite
  7. 复杂风控场景下,如何打造一款高效的规则引擎
  8. java csv 追加_如何在Java中添加一个包含CSV数据的列
  9. oracle备份信息在控制文件丢失,恢复之利用备份在所有控制文件丢失情况下恢复(一)...
  10. Python2 圆满落幕,Python 继续辉煌! | 原力计划
  11. mysql多表联合查询事例_MySQL——多表查询详细介绍以及实例
  12. js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
  13. Java课程设计-学生成绩管理系统
  14. linux hping3命令,Linux中hping3命令起什么作用呢?
  15. btsync多客户端同步的设置
  16. Linux的命名空间
  17. Chrome浏览器检查工具栏缩小
  18. Revit打印工具 RevitPrinter
  19. php翻译成中文版,php 翻译函数,可以将中文汉字转换为E文
  20. UnityMesh 博文收藏

热门文章

  1. 程序员注意啦,这个微信群可以学英语,而且全程免费!
  2. 微软警告 Windows 10 1703 即将停止支持!
  3. 2019 Go 开发者路线图,请收下这份指南!
  4. 赶超 Python 与 Java,JavaScript 问鼎最受欢迎的编程语言
  5. 产教融合,共塑未来”,CIE 2018 中国 IT 教育博鳌论坛盛大落幕
  6. c语言怎么定义一个条件变量,C++ 条件变量(condition_variable)
  7. 带你手撸红黑树,高级Java开发必看
  8. ubuntu合并终端_技术|初级:如何在终端及图形界面中更新 Ubuntu
  9. ffmpeg 拼接mp4_ffmpeg 合并 拼接 mp4视频
  10. arduino yield函数的作用_Python里Yield关键词的作用