continuous subarray
shortest
Example 1:
Input: [2, 6, 4, 8, 10, 9, 15]
Output: 5
Explanation: You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
Note:
- Then length of the input array is in range [1, 10,000].
- The input array may contain duplicates, so ascending order here means <=.
思路:copy一份原数组,对copy的数组排序, 再比较原数组和copy数组对应位置上的元素是否相等。
Solution:
package com.billkang;
import java.util.Arrays;
/**
* @author binkang
* @date May 20, 2017
*/
public class ShortestUnsortedContinuousSubarray {
public int findUnsortedSubarray(int[] nums) {
int n = nums.length;
int[] temp = Arrays.copyOf(nums, n);
Arrays.sort(temp);
int start = 0;
while (start < n && nums[start] == temp[start]) start++;
int end = n - 1;
while (end > start && nums[end] == temp[end]) end--;
return end - start + 1;
}
}