581. 最短無序連續子數組
581. Shortest Unsorted Continuous Subarray
題目描述
給定一個整型數組,你需要尋找一個連續的子數組,如果對這個子數組進行升序排序,那么整個數組都會變為升序排序。
你找到的子數組應是最短的,請輸出它的長度。
LeetCode581. Shortest Unsorted Continuous Subarray
示例 1:
輸入: [2, 6, 4, 8, 10, 9, 15]
輸出: 5
解釋: 你只需要對 [6, 4, 8, 10, 9] 進行升序排序,那么整個數組都會變為升序排序。
輸出: 5
解釋: 你只需要對 [6, 4, 8, 10, 9] 進行升序排序,那么整個數組都會變為升序排序。
說明:
- 輸入的數組長度范圍在 [1, 10,000]。
- 輸入的數組可能包含重復元素,所以升序的意思是 <=。
Java 實現
import java.util.Arrays;class Solution {public int findUnsortedSubarray(int[] nums) {int n = nums.length;int[] temp = nums.clone();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;}
}
參考資料
- https://leetcode.com/problems/shortest-unsorted-continuous-subarray/discuss/103070/Java-Solution-Sort.
- https://leetcode.com/problems/shortest-unsorted-continuous-subarray/
- https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/