dengxinyi 6 vuotta sitten
vanhempi
commit
7d1d4cff61
1 muutettua tiedostoa jossa 29 lisäystä ja 0 poistoa
  1. 29 0
      easy/581.shortest-unsorted-continuous-subarray.go

+ 29 - 0
easy/581.shortest-unsorted-continuous-subarray.go

@@ -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)