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;
}
}