网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 926|回复: 0
打印 上一主题 下一主题

leetcode真题-最长连续序列

[复制链接]

97

主题

98

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
跳转到指定楼层
楼主
发表于 2020-6-9 22:31:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:给定一个未排序的整数数组,请找出最长的连续元素序列的长度。
您的算法应以O(n)复杂度运行。
示例:
输入:  [100,4,200,1,3,2]
输出: 4
说明:最长的连续元素序列是[1, 2, 3, 4]。因此,它的长度是4。
解析:将所有数放入集合中,确保所有数唯一,通过使用两个数字记录,当集合中包含当前数的下一个数时,num自增,curMax记录num的最大值
代码:
class Solution {
    public int longestConsecutive(int[] nums) {
        HashSet<Integer> hs = new HashSet<Integer>();
        for(int num : nums) hs.add(num);
        
        if(nums.length == 0) return 0;
        
        int max = 1;
        
        for(int num : nums){
            if(hs.contains(num - 1)) continue;
            int currMax = 1;
            while(hs.contains(num + 1)){
                num++;
                currMax++;
            }
            max = Math.max(currMax, max);
        }
        
        return max;
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-22 11:20 , Processed in 0.033652 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表