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