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

相关推荐
bIo7lyA8v5 分钟前
算法可视化对教学与调试效率的影响分析的技术8
算法
hunterkkk(c++)14 分钟前
优先队列启发式最短路径快速算法(优化SPFA)-HEAP_SPFA算法
算法
SiliconGazer27 分钟前
第15届国赛满分代码解析(下)—— 运动轨迹算法、按键交互与完整状态机
算法·状态机·stc15f2k60s2·浮点运算·蓝桥杯国赛·运动轨迹、·向量分解
Navigator_Z28 分钟前
LeetCode //C - 1096. Brace Expansion II
c语言·算法·leetcode
luj_176830 分钟前
FreeDOS vs MS-DOS PC-DOS 对比解析
服务器·c语言·开发语言·经验分享·算法
笨笨没好名字44 分钟前
Leetcode刷题python版第一周
python·算法·leetcode
Cthy_hy1 小时前
斯特林数:组合划分的递归经典,一二两类全解
python·算法·斯特林数
不忘不弃1 小时前
计算pi的近似值
算法
码云骑士1 小时前
12-GIL不是性能杀手(下)-绕过GIL的三种方案与决策树
算法·决策树·机器学习
一只齐刘海的猫1 小时前
【Leetcode】无重复字符的最长子串
算法·leetcode·职场和发展