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