首页 > 其他分享 >3.最长连续序列

3.最长连续序列

时间:2023-10-31 11:45:16浏览次数:27  
标签:map nums int res 连续 数组 序列 最长 指针

题目概述:给定一个无序数组,问这个数组的元素能够组成的连续数组的最长长度为多少。
解题思路:很明显,我们需要对该数组先进行排序处理。我一开始用的是双指针,第一个指针枚举起点,第二个指针枚举该起点能够到达的最右边的距离,WA了。因为该数组有重复元素。(其实只要使用set去个重,这种方法就能AC了,不过当时没想到)。接着,我观察每个元素的数据范围在-1e9-1e9,而数组长度在1e5以内,这说明可以使用离散化的思想。对于无序离散化,可以直接使用map集合。再结合线性dp的思想,就能AC本题。
状态定义:f[i]:表示以i结尾的连续数组的最大长度
状态转移:f[i] = f[i - 1] + 1
状态起点:f[min] = 1
答案:Max(f[i])

代码

class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums.length == 0)return 0;
        //排序
        Arrays.sort(nums);
        Map<Integer,Integer>map = new HashMap<>();
        map.put(nums[0],1);
        for(int i = 1; i < nums.length; i ++){
            int key = nums[i];
            int value = map.getOrDefault((nums[i] - 1),0) + 1;
            map.put(key,value);
        }

        int res = 0;
        for(int i : nums){
            res = Math.max(res,map.get(i));
        }

        return res;
    }
}

标签:map,nums,int,res,连续,数组,序列,最长,指针
From: https://www.cnblogs.com/dengch/p/17799898.html

相关文章

  • 基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络
    1.算法运行效果图预览 LSTM:    GRU    2.算法运行软件版本matlab2022a 3.算法理论概述       门控循环单元(GatedRecurrentUnit,简称GRU)是一种用于序列建模和预测的递归神经网络(RNN)变体。GRU通过引入门控机制,克服了传统RNN在处理长序列时......
  • .NET 反序列化 GetterSettingsPropertyValue 攻击链
    0x01 链路1 SettingsPropertyValueSettingsPropertyValue位于命名空间 System.Configuration,用于应用程序存储和检索设置的值,此类具有Name、IsDirty、Deserialized、PropertyValue、SerializedValue等多个公共成员,其中SerializedValue属性用于获取或者设置序列化的值,便于持久......
  • 学不会的动态规划——子序列篇
    前言感觉摆烂好久了,其实好像也没有摆烂,只是没有学新东西了,之前打算死磕网络流的,但是感觉对我们队目前来说用处不大,就算南京站真的出了,99.9999%的概率写不来,所以就去练思维了。但是好像也并没有怎么练到,被大量的作业绑架了呜呜呜QAQ。感觉dp方面还是太弱了,最后挣扎一下。一些概念......
  • P4309 [TJOI2013] 最长上升子序列题解
    P4309[TJOI2013]最长上升子序列题解正文单调队列?单调锤子队列!!本题的操作可以省略成:单点修改区间查询好极了,此时我们有两种选择:线段树和树状数组,(平衡树,真不会,下一位因为不需要其他操作,所以我们还是选择更小巧更可爱的树状数组吧。关于vectorvector的insert操作支......
  • 使用RxJava实现多次连续点击的事件监听
    说起响应试编程,要提到的当然是Rx系列的库了,Rx系列的库对于很多语言和平台的运用是非常广泛的,例如(.NET,Java,Scala,Clojure,JavaScript,Ruby,Python,C++,Objective-C/Cocoa,Groovy等等。而本篇将会记录如何使用RxJava对Android点击事件的监听以异步数据流的方式来进行处理,......
  • leetcode(力扣) 128. 最长连续序列(哈希)
    文章目录题目描述思路分析完整代码题目描述给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。......
  • 批量修改Fasta文件中序列的名称
    比如一个Fasta文件的内容如下:seq001|aaaATCGGGGseq002|bbbAAAATTTT删除序列名称中“|”后的内容,只保留seq001,seq002这样的名称点击查看代码#!/usr/bin/envpythonimportsysimportpysamwithpysam.FastxFile(sys.argv[1])asfh:forrinfh:new_n......
  • Prufer序列 学习笔记
    2023.10.29晚,在随机做AtCoder的时候见到了[ABC303Ex]ConstrainedTreeDegree。然后开始思考DP,未果后看题解,发现是Prufer序列->尝试学习Prufer序列。什么是Prufer序列Prufer序列是一种将带标号的树用一个唯一的整数序列表示的方法,是解决树计数问题的工具。给一棵有根树......
  • BM72 连续子数组的最大和
    描述输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。数据范围:1<=n<=2\times10^51<=n<=2×105-100<=a[i]<=100−100<=a[i]<=100要求:时间复杂度为 O(n)O(n),空间复杂度为 O(n)O(n)进阶......
  • python vtk读取dicom序列+鼠标键盘交互
    目标:vtk+pyqt实现四视图。之前不了解vtk,也不了解鼠标键盘交互。网上搜索了资料,发现博客里大都是C++的例子。困扰几天,今天终于做出来一部分,分享一下。参考官方教程:examples.vtk.org/site/Python/IO/ReadDICOM/examples.vtk.org/site/Python/IO/ReadDICOMSeries/第一步:py......