每日OJ_牛客_NC95数组中的最长连续子序列_排序+模拟_C++_Java

news/2024/9/30 0:33:44 标签: c++, java, 算法, 数据结构

目录

牛客_NC95数组中的最长连续子序列_排序和模拟

题目解析

C++代码

Java代码


牛客_NC95数组中的最长连续子序列_排序+模拟

数组中的最长连续子序列_牛客题霸_牛客网


题目解析

排序 + 模拟。但是要注意处理数字相同的情况,还要注意去重。

排序后使用一个变量count来记录当前有序序列的长度。

  • 如果当前元素比前一个大1,说明他们可以构成连续的序列,count就加1。
  • 如果相等就跳过。
  • 否则就不能构成连续的序列,count要重置为1,要重新统计。

C++代码

class Solution
{
public:
    int MLS(vector<int>& arr)
    {
        sort(arr.begin(), arr.end());
        int n = arr.size(), ret = 0;
        for(int i = 0; i < n; )
        {
            int j = i + 1, count = 1;
            while(j < n)
            {
                if(arr[j] - arr[j - 1] == 1)
                {
                    count++;
                    j++;
                }
                else if(arr[j] - arr[j - 1] == 0)
                {
                    j++;
                }
                else
                {
                    break;
                }
            }
            ret = max(ret, count);
            i = j;
        }
        return ret;
    }
};

Java代码

import java.util.*;
public class Solution
{
    public int MLS (int[] arr)
    {
        Arrays.sort(arr);
        int n = arr.length, ret = 0;
        for(int i = 0; i < n; )
        {
            int j = i + 1, count = 1;
            while(j < n)
            {
                if(arr[j] - arr[j - 1] == 1)
                {
                    count++;
                    j++;
                }
                else if(arr[j] - arr[j - 1] == 0)
                {
                    j++;
                }
                else
                {
                    break;
                }
            }
            ret = Math.max(ret, count);
            i = j;
        }
        return ret;
    }
}

http://www.niftyadmin.cn/n/5683970.html

相关文章

线框图怎么画?4个绘制线框图技巧

1、什么是线框 线框是项目初期的蓝图&#xff0c;旨在清晰展示程序或网站的结构&#xff0c;帮助客户理解产品的基本设计布局。它不仅承载了界面显示的核心信息&#xff0c;还绘制了将要开发的应用程序或网站界面的形态。线框图展示了用户界面及操作流程中的重要元素&#xff…

React 有哪些生命周期

React组件的生命周期可以分为三个主要阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。每个阶段都伴随着特定的生命周期方法,允许开发者在组件的不同阶段执行代码。以下是React生命周期的详细概述: 一、挂载阶段(Mounting) constructor(props): 组件的构造…

C#中实现压缩包(如ZIP)的解压功能

在C#中&#xff0c;将压缩包&#xff08;如ZIP文件&#xff09;解压缩可以通过多种方式实现&#xff0c;最常见和简便的方法是使用.NET Framework自带的System.IO.Compression命名空间中的类&#xff0c;这个命名空间从.NET Framework 4.5开始引入。以下是一个简单的示例&#…

LeetCode讲解篇之53. 最大子数组和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 该问题我们可以转换为求以i为最后一个元素的0 ~ i范围内的最大子数组和&#xff0c;然后其中的所有的最大子数组和的最大值就是我们要返回的答案 题解代码 func maxSubArray(nums []int) int {ans : nums[0]for i : 1;…

ORM的了解

什么是ORM&#xff1f;为什么要用ORM&#xff1f;-CSDN博客 C高级编程&#xff08;99&#xff09;面向资源的设计思想&#xff08;ORM&#xff09;_c orm-CSDN博客 ORM:Object-Relational-Mapping 对象关系映射 -------------------------- 我想对数据库中的表A进行增删改…

SpringBoot 注解 @AutoConfiguration 在 2.7 版本中被新增(使用方法)

自 Spring Boot 2.7.0 版本起&#xff0c;关于自动配置进行了较大调整&#xff0c;要特别注意&#xff0c;主要内容如下。 1、自动配置注册文件 之前版本的自动配置类是写在 META-INF/spring.factories 文件中的&#xff0c;内容示例如下&#xff1a; org.springframework.b…

ASPICE的商业价值:提升汽车软件开发竞争力与质量保障

ASPICE&#xff08;Automotive SPICE&#xff09;作为汽车行业用于评价软件开发团队的研发能力水平的模型框架&#xff0c;其商业价值主要体现在以下几个方面&#xff1a; 一、提升软件质量和可靠性 标准化流程&#xff1a;ASPICE要求供应商按照其标准流程进行软件设计与开发&…

android设计模式的建造者模式,请举例

在Android开发中&#xff0c;建造者模式&#xff08;Builder Pattern&#xff09;是一种常用的设计模式&#xff0c;它主要用于构建复杂对象。建造者模式通过将复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这种模式特别适用于那些需要多个…