【注释详细,思路清晰】【打卡第20天】leetcode热题HOT100之Java实现:581. 最短无序连续子数组

这篇博客介绍了如何解决一个算法问题,即找出一个整数数组中,需要进行升序排序以使整个数组有序的最短子数组。算法分析包括找到数组的一个子序列,对其进行排序后能使原数组变成升序。代码实现中使用了数组克隆和排序,通过比较原数组和排序后的克隆数组来确定子数组的边界,最后返回子数组的长度。
摘要由CSDN通过智能技术生成

1、题目描述

给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

请你找出符合题意的 最短 子数组,并输出它的长度。

 2、算法分析

    本题的目的是

    ① 找出数组中的其中一个子数组,对子数组进行排序后,那么整个数组就是升序顺序

    ② 返回符合条件的子数组长度

    解题方法:

    克隆一个数组,比较原数组和克隆的数组,看哪一段不一样。这就出来咯

知识点补充:

① 数组的克隆:.clone()

3、代码实现

/**
    本题的目的是
    1、找出数组中的其中一个子数组,对子数组进行排序后,那么整个数组就是升序顺序
    2、返回符合条件的子数组长度

    解题方法:
    1、克隆一个数组,比较原数组和克隆的数组,看哪一段不一样。这就出来咯
*/
class Solution {
    public int findUnsortedSubarray(int[] nums) {
        // 原数组长度
        int numsLength = nums.length;
        // 克隆原数组
        int[] array = nums.clone();
        // 对克隆数组进行排序
        Arrays.sort(array);
        // 定义数组的开始索引和结束索引
        int i = 0;
        int j = numsLength - 1;
        // 比较原数组和克隆数组值是否相等
        while(i <= j && nums[i] == array[i]){
            i++;
        }
        while(i <= j && nums[j] == array[j]){
            j--;
        }
        return j - i + 1;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值