题意:给出一个数组,求其最小的无序数组,这个无序数组经过排序后,整个数据也是排好序的
思路:将数据排序,然后与原来的数组比较,从开始找到不相等的位置,然后从尾部开始找到不相等的位置,两个位置差就是最小无序数组的长度
代码如下:
public class Solution {
public int findUnsortedSubarray(int[] nums) {
int len = nums.length;
int[] tmp = new int[len];
System.arraycopy(nums, 0, tmp, 0, len);
Arrays.sort(tmp);
int start = 0, end = len - 1;
while (start <= end && nums[start] == tmp[start])start++;
while (end >= start && nums[end] == tmp[end]) end--;
return end - start + 1;
}
}