LeetCodeHot100——128.最长连续序列

这道题的链接放在这里了:

128. 最长连续序列 - 力扣(LeetCode)

这道题主要思路就是想要在一个凌乱的数组中找出一组最长的连续数字序列

我对于这道题个人的解法如下:

java 复制代码
class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums==null||nums.length==0){
            return 0;
        }
        Set<Integer> set = new HashSet<>();
        int res = 1;
        for(int num:nums){
            set.add(num);
        }
        for(int num:set){
            if(set.contains(num-1)){
                continue;
            }
            if(set.contains(num+1)){
                int cur = num;
                int curLength = 1;
                while(set.contains(cur+1)){
                    cur++;
                    curLength++;
                }
                res = Math.max(res,curLength);
            }
        }
        return res;
    }
}

直接用循环的暴力查找方法我们就不考虑了,我是使用Set来存储数组中的每一个元素,这也就达到了我的一个目的:"去重",因为如果说数组中出现重复元素的话,是不影响结果的,比如说最长序列是123456,数组中有多个1、多个2...都是对结果没影响的,但是不处理的话会影响我们的效率,接下来我们要遍历set,如果说在set中存在当前的数字+1,那就直接跳过,因为如果我们每一个数字都要计算长度的话那会很浪费时间,所以我们为了节省时间,我选择只对一组连续数字的最小的数字进行长度计算从而获得这个连续数字串的长度,当然选择最大的值也行,逮住最小值就计算一下长度,在取最大值返回就好了;

相关推荐
Jerry2 小时前
LeetCode 160. 相交链表
算法
Jerry2 小时前
LeetCode 19. 删除链表的倒数第 N 个结点
算法
金銀銅鐵2 小时前
费马小定理
python·数学·算法
技术不好的崎鸣同学3 小时前
[ACTF2020 新生赛]Exec 思路及解法
算法·安全·web安全
Full Stack Developme5 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
Jerry6 小时前
LeetCode 707. 设计链表
算法
C语言小火车6 小时前
C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
开发语言·c++·算法·排序算法·堆排序
weixin_400005606 小时前
Vision-Language-Action:LMDrive双损失函数训练模块与 LangAuto 基准评测框架
人工智能·深度学习·算法·机器学习·自动驾驶
kebidaixu6 小时前
两轮BMS AFE SH367306 I2C 读写时序
算法