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,那就直接跳过,因为如果我们每一个数字都要计算长度的话那会很浪费时间,所以我们为了节省时间,我选择只对一组连续数字的最小的数字进行长度计算从而获得这个连续数字串的长度,当然选择最大的值也行,逮住最小值就计算一下长度,在取最大值返回就好了;

相关推荐
leobertlan6 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的6 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
开发小能手1237 小时前
答案daanC语言
数据结构·算法
Navigator_Z9 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
pride.li10 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
旺仔仔仔11 小时前
机器人项目实战(5):从单次抓取,到接收指令连续做事
算法
旺仔仔仔11 小时前
机器人项目实战(2):识别物体、提取点云,再到抓取姿态
算法
姜鱼问生11 小时前
密码明明一样,为什么 GPG 说“错的“?
后端·算法·架构
启观川11 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
对空六课11 小时前
指标口径生效时间的版本查询实现
大数据·服务器·前端·算法·数据分析