★581. 最短无序连续子数组

news2024/11/25 0:32:33

581. 最短无序连续子数组

在这里插入图片描述

方法一:

在这里插入图片描述

class Solution {
    public int findUnsortedSubarray(int[] nums) {
        // 数组的复制
        int[] sortednums = new int[nums.length];
        System.arraycopy(nums, 0, sortednums, 0, nums.length);
        Arrays.sort(sortednums);
        int l=0,r=nums.length-1;
        while(l<nums.length && nums[l] == sortednums[l]) l++;
        while(r >=0 && nums[r] == sortednums[r]) r--;
        return r==-1 ? 0 : r-l+1;
    }
}

方法二

	O(n) : 找到最右边的最小的,找到最左边的最大的不合理的,二者之间就是需要重新排序的。

        什么叫最右边最小的呢? 正常来说从左到右应该是依次变大的,但是如果遇到当前值比左边的最大值小的,说明这个值是有问题的。
        一直往右找,找到有问题的区间的右边界。
        左边最大的不合理的:正常左边是比右边小的。如果遇到左边比右边大,那就是不合理的。
class Solution {
    public int findUnsortedSubarray(int[] nums) {
        int l = -1;
        int r = - 1;
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
        // O(n) : 找到最右边的最小的,找到最左边的最大的不合理的,二者之间就是需要重新排序的。
        /*
            什么叫最右边最小的呢? 正常来说从左到右应该是依次变大的,但是如果遇到当前值比左边的最大值小的,说明这个值是有问题的。
            一直往右找,找到有问题的区间的右边界。
            左边最大的不合理的:正常左边是比右边小的。如果遇到左边比右边大,那就是不合理的。
         */
         for(int i=0;i<nums.length; i++){
             if(nums[i] >= max)  //说明正常,右边的比当前左边的最大值还大。max表示当前左边的最大值
                max = nums[i];
            else
                r = i;      // 否则不正常则记录左边不正常的边界。
         }
         for(int i=nums.length-1; i>=0; i--) {
             if(nums[i] <= min)
                min = nums[i];
            else l = i;
         }
         return l == -1 ? 0:r-l+1;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1288907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

Leetcode—383.赎金信【简单】

2023每日刷题&#xff08;五十&#xff09; Leetcode—383.赎金信 实现代码 class Solution { public:int arr[26] {0};int arr2[26] {0};bool canConstruct(string ransomNote, string magazine) {int len ransomNote.size();int len2 magazine.size();for(int i 0; i …

前置微小信号放大器在传感器测试中的应用

前置微小信号放大器在医疗领域中有广泛的应用。它们是一种专门设计用于放大微弱信号的放大器&#xff0c;可以提升信号的强度和质量&#xff0c;从而帮助医生进行准确的诊断和治疗。以下是前置微小信号放大器在医疗中的几个主要应用。 前置微小信号放大器常用于心电图设备中。E…

开始使用高性能、低延迟的对象存储服务 Amazon S3 Express One Zone

全新的对象存储服务 Amazon S3 Express One Zone 旨在提供比 Amazon S3 Standard 高出10倍的性能&#xff0c;同时每秒可处理数十万个请求&#xff0c;并且延迟始终保持在个位数毫秒级&#xff0c;因此非常适合存储最常访问的数据和要求最苛刻的应用程序。将对象存储和复制到单…

21款奔驰GLC300L升级HUD抬头显示 平视仪表信息

说起HUD抬头显示这个配置&#xff0c;最初是用在战斗机上的&#xff0c;它可以让战斗机驾驶员读取飞机的各种信息和状态&#xff0c;而无需移动头部&#xff0c;这样就能够有效的提高效率。但随着汽车技术的进步HUD这种配置也逐渐下放到民用车上。 发展到今&#xff0c;车上的…

Linux Shell 基础命令

Linux 是一个开源的操作系统&#xff0c;其命令行界面是它的重要组成部分。在这个界面下&#xff0c;Shell 是一个能够与操作系统进行交互的工具。Shell 是一种程序&#xff0c;它能够接收用户输入的命令&#xff0c;并将这些命令发送到操作系统中进行处理。 在 Linux 中&…

UE小:UE5性能分析

开始录制性能追踪 要开始录制性能追踪&#xff0c;您可以简单地点击界面上的“开始录制”按钮。 查看追踪数据 录制完成后&#xff0c;点击“Trace”菜单中的“UnrealInsights”选项来查看追踪数据。 使用命令行进行追踪 如果点击录制按钮没有反应&#xff0c;您可以通过命令…

R语言【rgbif】——最全最详细的函数解读(name_suggest)

name_suggest最全最详细的参数解读 1. name_suggest的基本情况2. name_suggest的参数3. name_suggest的示例与理解3.1 参数 【q】3.2 参数【rank】3.3 参数【limit】3.4 参数【fields】3.5 参数【datasetKey】3.6 参数【curlopts】 1. name_suggest的基本情况 name_suggest是用…

ROS小练习——话题发布

目录 一、话题与消息获取 1、话题 2、消息 二、代码编写 1、C 2、python 三、编译运行 一、话题与消息获取 打开小乌龟案例 1、话题 rqt_graph rostopic list 2、消息 获取消息类型: rostopic type /turtle1/cmd_vel 获取消息格式: rosmsg info geometry_msgs/Twi…

NFC对物联网开发的影响及用途

当谈到NFC对物联网的影响时&#xff0c;不得不提它的几个重要的优势&#xff0c;可能在未来几年影响着物联网的发展方向。 全球智能手机的普及是其中一个重要因素&#xff1a;市面上已有数十亿部支持NFC的智能手机&#xff0c;专家们相信这个数字还会大幅增长。智能手机用户已…

2023年美赛获奖结果分析(附中英文版赛题)

023年美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff09;成绩已经公布&#xff0c;现在就请跟随着忠哥一起通过Python 进行大数据分析吧&#xff01; 美赛成绩分析 2023年美国大学生数学建模竞赛MCM参赛队伍总数为11296支&#xff0c;ICM参赛队伍总数为9562支&#xff0…

PostGIS学习教程九:空间连接

PostGIS学习教程九&#xff1a;空间连接 空间连接&#xff08;spatial joins&#xff09;是空间数据库的主要组成部分&#xff0c;它们允许你使用空间关系作为连接键&#xff08;join key&#xff09;来连接来自不同数据表的信息。我们认为“标准GIS分析”的大部分内容可以表示…

创建Vue2项目,引入chart.js,并生成柱形图

1. 创建一个新的 Vue 2 项目 如果你还没有创建项目&#xff0c;可以使用 Vue CLI 来创建一个新项目。首先确保你已经安装了 Node.js 和 npm。然后安装 Vue CLI 并创建一个新项目。 npm install -g vue/cli vue create my-vue-chart-project在创建过程中选择 Vue 2 版本。 2.…

物料做出库的时候提交,提示 【即时成本为0】

【财务会计】——【出库核算】——【材料出库核算】

成为创作者的第256天——我的创作纪念日

目录 机缘 收获 日常 成就 憧憬 结尾 机缘 最初成为创作者的初心 我最初成为创作者是在大二上学期看到B站有博主在进行职业规划的时候说&#xff0c;可以写博客来记录自己的学习&#xff0c;这样在日后对自己的职业可以有一定的帮助&#xff0c;作为自己的个人名片&#…

多线程(初阶八:计时器Timer)

目录 一、标准库中的计时器 1、计时器的概念 2、计时器的简单介绍 二、模拟实现一个计时器 1、思路 &#xff08;1&#xff09;计数器中要存放任务的数据结构 &#xff08;2&#xff09;存放优先级队列中的类型&#xff1a;自定义任务类MyTimerTask &#xff08;3&…

Vue集成MarkDown编辑器(超详细步骤)

本次博客用于来进行展示如何使用Vue来集成MarkDown编辑器&#xff0c;首先在我们的IDEA的控制台输入以下命令&#xff1a;npm install mavon-editor -S 注意&#xff0c;一定要在vue的哪个目录下执行。 接着&#xff0c;我们在main.js文件中进行引入markdown的文件。 之后我们…

华为认证 | 11月底这门HCIP认证正式发布!

华为认证openGauss高级工程师HCIP-openGauss V1.0&#xff08;中文版&#xff09;自2023年11月30日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司打造了覆盖ICT领域的认证体系&…

对数据库关系代数中除法运算的理解

一、基本概念 1.象集 给定一个关系R(X,Z)&#xff0c;X和Z为属性组&#xff0c;当t[X]x时&#xff0c;x在R中的象集定义为&#xff1a; Z x { t [ Z ] ∣ t ∈ R , t [ X ] x } Z_x\{t[Z]|t\in R,t[X]x\} Zx​{t[Z]∣t∈R,t[X]x} 表示R中属性组X上值为x的诸元组在Z上分量的…

力扣面试经典150题——Unix简化路径

https://leetcode.cn/problems/simplify-path/description/?envTypestudy-plan-v2&envIdtop-interview-150 思路&#xff1a;将串以/分割&#xff0c;判断字符串是…/./其他&#xff0c;进行入栈和出栈&#xff0c;最后留下的就是结果&#xff0c;拼装一下就好了。 三个…