1、前言
题目描述2、思路
这道题最简单的思路是,首先将原数组复制出来,然后对复制的数组 arrays 进行排序,最后遍历复制数组 arrays 和原数组 nums,然后比较他们的每个位置的数,如果数字不想等,说明是经过排序变换了位置,那么更新 start、end 的值。
3、代码
public class Q581_FindUnsortedSubarray {
public int findUnsortedSubarray(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
int[] arrays = nums.clone();
Arrays.sort(arrays);
int start = nums.length, end = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] != arrays[i]){
start = Math.min(start, i);
end = Math.max(end, i);
}
}
return end - start >= 0 ? end - start + 1 : 0;
}
public static void main(String[] args) {
System.out.println(new Q581_FindUnsortedSubarray().findUnsortedSubarray(new int[]{2,6,4,8,10,9,15}));
}
}
网友评论