博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程题—leetcode:128. 最长连续序列
阅读量:2442 次
发布时间:2019-05-10

本文共 883 字,大约阅读时间需要 2 分钟。

题目描述
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目解析

1、题目要求时间复杂度为O(n)

2、用hashmap的key储存数字,value储存当前数字对应的最长连续数列的长度
3、分为以下四种情况

  • 如果hashmap中已经包含,则直接跳过
  • 如果hashmap中仅包含前一个数字,则将当前数字value设为get(num-1)+1,并且将num - get(num-1)的value 也设为et(num-1)+1,可以理解为同一个最长连续数列的开始和结尾的value均为当前的长度
  • 如果hashmap中仅包含前一个数字,则将当前数字value设为get(num+1)+1,并且将num +get(num-1)的value 也设为et(num-1)+1,可以理解为同一个最长连续数列的开始和结尾的value均为当前的长度
  • 如果hashmap中既包含前一个数字,又包含后一个数字,则将当前数字value设为get(num-1)+get(num+1)+1,并且将num - get(num-1)和num +get(num-1)的value 也设为get(num-1)+get(num+1)+1
通过代码
import java.util.HashMap;class Solution {
public int longestConsecutive(int[] nums) {
int res=0; HashMap
map = new HashMap
(); for(int i=0;i
你可能感兴趣的文章
根据什么选择一套适合自己的linux系统?(转)
查看>>
戴尔将在法国推出Linux笔记本(转)
查看>>
近9成盗版Office用户称愿投奔开源(转)
查看>>
MySQL购InnoDB不敌甲骨文宣布开放数据引擎(转)
查看>>
银行监会选红旗Linux建设公文传输系统(转)
查看>>
网上交易中帐号和密码被盗的解决途径(转)
查看>>
Java线程总结(转)
查看>>
Java学习之类的属性(转)
查看>>
轻松搞定Java内存泄漏(转)
查看>>
Java学习之值传递(转)
查看>>
Java 范型攻略篇(转)
查看>>
linux中crontab命令(转)
查看>>
牛人请进 小弟跪求(转)
查看>>
Linux版本凌乱痛失市场(转)
查看>>
大家好,新学生。 请问怎么升级Redhat9.0 kernel 2.4.X-->2.6.18 的详细过程(转)
查看>>
FreeBSD6.1+无线+永中......桌面安装【附笔记】(转)
查看>>
adsl设置(转)
查看>>
Wii将有一个可升级的Linux操作系统(转)
查看>>
Linux机为先锋智能机和PDA06销量大(转)
查看>>
Oracle与SQL Server在企业应用中的比较(转)
查看>>