博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
阅读量:5218 次
发布时间:2019-06-14

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

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

例如,
给出 [100, 4, 200, 1, 3, 2],
这个最长的连续序列是 [1, 2, 3, 4]。返回所求长度: 4。
要求你的算法复杂度为 O(n)。
详见:https://leetcode.com/problems/longest-consecutive-sequence/description/

Java实现:

方法一:

class Solution {    public int longestConsecutive(int[] nums) {        int res=0;        Set
s=new HashSet
(); for(int num:nums){ s.add(num); } for(int num:nums){ if(s.remove(num)){ int pre=num-1; int next=num+1; while(s.remove(pre)){ --pre; } while(s.remove(next)){ ++next; } res=Math.max(res,next-pre-1); } } return res; }}

方法二:

class Solution {    public int longestConsecutive(int[] nums) {        int res = 0;        Map
m = new HashMap
(); for (int num : nums) { if (!m.containsKey(num)){ int pre = m.containsKey(num - 1) ? m.get(num - 1) : 0; int next = m.containsKey(num + 1) ? m.get(num + 1) : 0; int sum = pre + next + 1; m.put(num, sum); res = Math.max(res, sum); m.put(num - pre, sum); m.put(num + next, sum); } } return res; }}

参考:https://www.cnblogs.com/grandyang/p/4276225.html

转载于:https://www.cnblogs.com/xidian2014/p/8723331.html

你可能感兴趣的文章
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>
Linq使用Join/在Razor中两次反射取属性值
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
优秀员工一定要升职吗
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
sql常见面试题
查看>>