Leetcode.581.最短连续子数组

Leetcode.581.最短连续子数组

题目难度:中等
题目
思路:
1.判断最短的连续子序列,升序序列
2.只要找到中间最短的序列不是有序即可
3.将数组分为三段,NumsA,NumsB,NumsC,只需要找到NumsB
4.复制数组,进行排序,然后比较两端,记录left和right,ans = right - left + 1
代码:

class Solution(object):
    def findUnsortedSubarray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        def isSorted():
            for i in range(1,len(nums)):
                if nums[i] < nums[i-1]:
                    return False
            return True
        if isSorted():
            return 0
        left,right = 0,len(nums) - 1
        nums_copy = sorted(nums)
        while nums[left] == nums_copy[left]:
            left += 1
        while nums[right] == nums_copy[right]:
            right -= 1
        return right - left + 1
        

版权声明:本文为weixin_43896253原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。