首页 > 其他分享 >[LeetCode Hot 100] LeetCode128. 最长连续序列

[LeetCode Hot 100] LeetCode128. 最长连续序列

时间:2023-12-01 17:55:25浏览次数:36  
标签:set return nums int res 元素 Hot 100 LeetCode128

题目描述

思路


将数组所有点映射到一个数轴上,可以发现问题变为求每段区间首元素到尾元素的长度的最大值
区间的长度:区间尾元素值-区间首元素值 + 1

方法一:超出时间限制

这个方法是最初自己想到的,但是超时了,主要原因是程序会有冗余的遍历过程,增加了开销。
思路:(时间复杂度太高)

  1. 先把所有元素加入到哈希表中
  2. 遍历每一个元素n,看是否存在n+1,更新res
  3. 求最大res
class Solution {
    public int longestConsecutive(int[] nums) {
        if (nums.length == 0) return 0;
		// 定义一个哈希表
        Set<Integer> set = new HashSet<>();
		// :将所有数添加到哈希表中
        for (int i : nums) set.add(i);
        int res = 0;
        
        for (int i = 0; i < nums.length; i ++) {
            int n = nums[i] + 1;
            while (set.contains(n)) {
                len = len + 1;
                n = n + 1;
            }
            res = Math.max(res, len);
        }
        return res;
    }
}

方法二:哈希表

求每段区间首元素到尾元素的长度的最大值

class Solution {
    public int longestConsecutive(int[] nums) {
        if (nums.length == 0) return 0;
        Set<Integer> set = new HashSet<>();
        for (int i : nums) set.add(i);
        int res = 0;
        
        for (int num : nums) {
            if(!set.contains(num - 1)) {
				// 说明是区间的首元素
                int x = num;
                while(set.contains(x + 1)) {
                    x ++;
                }
                res = Math.max(res, x - num + 1);
            }
        }
        return res;
    }
}

标签:set,return,nums,int,res,元素,Hot,100,LeetCode128
From: https://www.cnblogs.com/keyongkang/p/17870624.html

相关文章

  • 畅网全新N100 NAS主板悄悄上架了
     来看看靓照 ......
  • NVIDIA H100 GPU:GPU的机密计算
    NVIDIA的官方说明:https://www.nvidia.cn/data-center/solutions/confidential-computing/   ==========================......
  • NI-9219 100 S/s/ch国产化4通道C系列通用多功能模拟输入模块,支持多种传感器
    100S/s/ch,4通道C系列通用模拟输入模块NI-9219专为多功能测试而设计。NI-9219可用于测量来自多种传感器(如应变计,电阻温度检测器(RTD),热电偶,测压元件和其他有源传感器等)的信号,以及制作1/4桥,半桥和全桥电流测量,且具有内置电压和电流激励。您可以在每个通道上分别选择,从而执行不同的测......
  • 10046
    1.10046事件会话级别适用场景:这种方法适用于SQL语句可以在新的session创建后再运行1.1.设置生成的trace文件标志altersessionsettracefile_identifier='10046';1.2.开启跟踪altersessionsetevents'10046tracenamecontextforever,level12';1.3.执行要跟踪的S......
  • 初中英语优秀范文100篇-013My Progress-我进步了
    PDF格式公众号回复关键字:SHCZFW013记忆树1Ihavemadeprogressindevelopingreadinghabits.翻译我在培养阅读习惯方面有所进展简化记忆进展句子结构主语是“I”(我),谓语是“havemade”(成功做了某件事情的动作),宾语是“progress”(进步),“indevelopingreadingh......
  • 1000多页!LeetCode刷题手册分享
    这本手册确实是一部令人印象深刻的作品。(手册链接在文末!!!)首先,内容充实是这本手册的一大亮点。它涵盖了广泛的算法和数据结构主题,包括数组、链表、树、图、排序算法、动态规划等等。每个主题都有详细的解释、示例代码和复杂度分析,帮助读者深入理解和掌握相关知识。此外,手册还提供......
  • 求1-100相加的总和
    第一种方式:一行代码搞定print(sum(range(1,101)))  第二种方式:for循环sum=0foriinrange(1,101):sum=sum+1print(sum)  ......
  • 初中英语优秀范文100篇-012 My Experience of Being a Volunteer - 我的一次志愿者经
    PDF格式公众号回复关键字:SHCZFW012记忆树1Lastyear,Ipaidavisittothehomefortheagedwithmyclassmatesasvolunteers.翻译去年,我和我的同学作为志愿者去老年人之家探望了老人们。简化记忆探望老人句子结构这个句子可以分为四个主要部分:1状语短语:“La......
  • js和python获取1-100之间的质数
    jsfor(leti=2;i<=100;i++){letiszs=truefor(letj=2;j<i;j++){if(i%j===0){iszs=falsebreak}}if(iszs){zs.push(i)}}console.log(zs)pythonzs=[]foriinrange(2,101):iszs......
  • 字符种类转换one hotlabel
    fromsklearn.preprocessingimportLabelEncodercell_name_label=pd_data['cell_type']conpound_name_label=pd_data['sm_lincs_id']cell_cat=LabelEncoder().fit_transform(cell_name_label)cell_label=F.one_hot(torch.from_numpy(cell_cat).long......