题解 | #最短无序连续子数组#
最短无序连续子数组
https://www.nowcoder.com/practice/d17f4abd1d114617b51e951027be312e
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int findUnsortedSubarray (int[] nums) { // 复制 排序 int[] newNums = Arrays.copyOf(nums, nums.length); Arrays.sort(newNums); boolean exist = true; for (int i = 0; i < nums.length; i++) { if (newNums[i] != nums[i]) { exist = false; break; } } // 完全一直,无需排序 if (exist) { return 0; } int left = 0; int right = 0; // 不一致 逐个判断,开始不一致的序号 for (int i = 0; i < nums.length; i++) { if (newNums[i] != nums[i]) { left = i; break; } } // 结尾第一个不一致的序号 for (int i = nums.length-1; i >=0; i--) { if (newNums[i] != nums[i]) { right = i; break; } } return right - left + 1; } }