Leetcode_128_最长连续序列_hashset

该博客讨论了一种在Java中寻找数组中最长连续序列的解决方案。博主首先考虑使用基数排序,但由于实现复杂,转而采用HashSet。通过创建一个HashSet存储数组元素,遍历并检查相邻元素是否存在来找到最长序列。算法的时间复杂度与HashSet在不同Java版本中的实现有关,可能介于O(n)到O(n log n)之间。
摘要由CSDN通过智能技术生成

一开始想用基数排序,但感觉写起来真的太复杂了,复杂度应该是1e6,算符号一共十位嘛。
这个用set的我感觉还得看版本,1.8用红黑树要是冲突太多还真不一定算O(n)
做法就是先去重,然后遍历维护ans。
如果x-1在set中存在,就不查,等到x-1的时候再查。

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for(int num:nums) {
            set.add(num);
        }
        int ans = 0;
        for(Integer num : set) {
            int temp = 1;
            if(!set.contains(num-1)) {
                while(set.contains(++num)) {
                    temp++;
                }
                ans = Math.max(temp, ans);
            }
        }
        return ans;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值