| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- 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)
 
- 	sort.Ints(sorted)
 
- 	l, r := 0, n-1
 
- 	for ; l < n && nums[l] == sorted[l]; l++ {
 
- 	}
 
- 	if l == n {
 
- 		return 0
 
- 	}
 
- 	for ; nums[r] == sorted[r]; r-- {
 
- 	}
 
- 	return r - l + 1
 
- }
 
 
  |