LeetCode Hot100之三:128.最长连续序列

编程入门 行业动态 更新时间:2024-10-28 10:32:57

LeetCode Hot100<a href=https://www.elefans.com/category/jswz/34/1768563.html style=之三:128.最长连续序列"/>

LeetCode Hot100之三:128.最长连续序列

题目

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

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

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

思路

将未排序的整数数组映射到存储单个元素的HashSet上。该HashSet相当于一个数轴。
接着就只需要判断该数轴上有几段分开的段,返回其中最长的段长度即可。
如何判断有几段分开的段呢,就是遍历该数轴,判断是否是数轴起点。如果是数轴起点,则开始计数,然后一直记到数轴上的空值。

java代码

class Solution {public int longestConsecutive(int[] nums) {Set<Integer>map = new HashSet();for(int num : nums){map.add(num);}int ans=0;for(Integer i:map){//判断该数是否是数轴的起点,不存在则说明是if(!map.contains(i-1)){int x= i;int temp=1;while(map.contains(x+1)) {x++;temp++;}ans = Math.max(ans, temp);}}return ans;}
}

效率

26ms
击败 61.75%使用 Java 的用户
还行,不用继续优化了。

更多推荐

LeetCode Hot100之三:128.最长连续序列

本文发布于:2023-11-15 15:48:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1602243.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:之三   序列   最长   LeetCode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!