#直接排序比较,这真是我没想到的

#之前的心路历程是,先找第一个变化的点,在这点之后子数组进行一次类似判断,是否需要改变

#相当于把数组一个个缩小成子数组,然后遍历判断

#当然这是很麻烦的,而且复杂度很高

#然后去看解析,好家伙,聪明如此

#于是从善如流,就用这个排序比较了

class Solution:

def findUnsortedSubarray(self , nums: List[int]) -> int:
    
    # write code here

    n = len(nums)
    temp = []
    for i in range(n):
        temp.append(nums[i]) #这是不用函数的复制,就相当于不用调包
        
    temp = sorted(temp)  
    #值得一提的是,用sorted是不会改变nums,而用.sort()会改变nums
    start,end = -1,-1
    #这是判断的标签,如果本身是有序的,就在之后判断返回0
    for i in range(n):
        if temp[i] != nums[i]:
            start = i
            break
            #这个break也很重要,不然他会找到后面第二个不同的点
    
    for j in range(n-1,0,-1):
        if temp[j] != nums[j]:
            end  = j
            break
    
    if start == -1 and end == -1:
        return 0
    else:
        return end - start +1
        #长度是+1的,这个第二重要