数组相关的题目

数组相关的题目

128. 最长连续序列

题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

  • 很容易就能想到要先排序,再进行后续的处理。
  • 有一个坑:该数组的值可能会有重复 比如 数组[1,2,0,1,0,1] ,最长序列为3,即[0,1,2]
    应该怎么去重呢?两种办法:
    ①在排序的时候顺便就去重了
    ②在计算最长序列的时候去重 √
  • 因为我选择了处理中去重,所以我的处理过程里有两种情况要处理
    ① nums[i] - 1 == nums[i-1] 需要将递增的序列数+1
    ② nums[i] == nums[i-1] 则跳过该节点
    在这里插入图片描述
class Solution {
   
    public int longestConsecutive(int[] nums) {
   
        if(nums.length == 0) return 0;
        Arrays.sort(nums);
        int res = 1;
        // 计算每一次的最长序列长度
        int count = 1;

        for(int i = 1; i < nums.length; i++){
   
            // 重置
            count = 1;
            // 有两种情况需要处理
            // nums[i] - 1 == nums[i-1]  需要将递增的序列数+1
            // nums[i] == nums[i-1] 跳过该节点
            while(i < nums.length && (nums[i] - 1 == nums[i-1] || nums[i] == nums[i-1])){
   
                if(nums[i] - 1 == nums[i-1])
                    count++;
                i++;
                res = Math.max(res, count);
            }
        }
        return res;
    }
}

相关推荐

  1. 数位DP相关题目及通用模版

    2023-12-17 22:18:04       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 22:18:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 22:18:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 22:18:04       82 阅读
  4. Python语言-面向对象

    2023-12-17 22:18:04       91 阅读

热门阅读

  1. linux 内核同步互斥技术之读写自旋锁

    2023-12-17 22:18:04       56 阅读
  2. 基于SpringBoot的个人健康管理系统小程序

    2023-12-17 22:18:04       71 阅读
  3. C++异步网络库workflow系列教程(2)redis任务

    2023-12-17 22:18:04       251 阅读
  4. 算法:删除有序数组中的重复项---双指针[3]

    2023-12-17 22:18:04       59 阅读
  5. 从memcpy()函数中学习函数的设计思想

    2023-12-17 22:18:04       66 阅读
  6. 英语中疑问句

    2023-12-17 22:18:04       55 阅读
  7. 【跨域】同源策略、跨域解决

    2023-12-17 22:18:04       56 阅读
  8. 数字签名介绍

    2023-12-17 22:18:04       58 阅读
  9. 一文打通RLHF的来龙去脉

    2023-12-17 22:18:04       66 阅读