128. 最长连续序列

发布时间:2024年01月12日
  1. 最长连续序列
    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
    ==要求:==请你设计并实现时间复杂度为 O(n) 的算法解决此问题

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

题解:排序解决

 public int longestConsecutive(int[] nums) {
            // 如果nums长度为0时,则返回0
        if(nums.length == 0){
            return  0;
        }
        // 1、初始化两个变量,求最大序列长度,因nums长度为0已排除外,因此,最小长度也为1
        int length = 1;
        int maxlength = 1;
        // 2、对原先数组进行排序
        Arrays.sort(nums);
        for(int i =1; i < nums.length; i++) {
            // 3、情况1:如果满足 后一个数等于前一个数加1,则length++
            if(nums[i-1] + 1 == nums[i]){
                length++;
                maxlength = Math.max(length,maxlength);
                //3、情况2: 如果前后两值相等,则继续下一次循环
            }else if(nums[i - 1] == nums[i]){
                continue;
            }else{
                // 不满足时,初始化length的值
                length = 1;
            }
        }
        return  maxlength;
    }
文章来源:https://blog.csdn.net/an760998254/article/details/135541733
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。