|
@@ -1,4 +1,33 @@
|
|
|
func findUnsortedSubarray(nums []int) int {
|
|
|
+ i, j, max, min := 0, -1, nums[0], nums[len(nums)-1]
|
|
|
+ for l, r := 0, len(nums)-1; 0 <= r; l, r = l+1, r-1 {
|
|
|
+ max = maxInt(max, nums[l])
|
|
|
+ min = minInt(min, nums[r])
|
|
|
+ if nums[l] != max {
|
|
|
+ j = l // The last num that < max
|
|
|
+ }
|
|
|
+ if nums[r] != min {
|
|
|
+ i = r // The last num that > min
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return j - i + 1
|
|
|
+}
|
|
|
+
|
|
|
+func maxInt(x, y int) int {
|
|
|
+ if x < y {
|
|
|
+ return y
|
|
|
+ }
|
|
|
+ return x
|
|
|
+}
|
|
|
+
|
|
|
+func minInt(x, y int) int {
|
|
|
+ if x < y {
|
|
|
+ return x
|
|
|
+ }
|
|
|
+ return y
|
|
|
+}
|
|
|
+
|
|
|
+func findUnsortedSubarraySort(nums []int) int {
|
|
|
n := len(nums)
|
|
|
sorted := make([]int, n)
|
|
|
copy(sorted, nums)
|