心路历程:
本以为这道题要用动态规划求解,因为题目中这几个关键字与动态规划太匹配了,结果想了半天也没发现dp(i)和dp(i-1)的递推关系。
这道题本意考察双指针的做法,也可以用排序后做比较的方式来做。
注意的点:
1、书写while循环时统一用大于小于号,如果到头退出循环的条件就是等于;如果中间break的话就是满足中间条件
2、注意区间长度比索引差大1
解法:排序+双指针
class Solution:def findUnsortedSubarray(self, nums: List[int]) -> int:# 动态规划做不了!new = sorted(nums)if new == nums: return 0n = len(nums)l, r = 0, n - 1while l < n:if nums[l] != new[l]:break # 已经break了不需要再去-1,并且保证了一定从break退出循环l += 1while r > -1:if nums[r] != new[r]:breakr -= 1return r - l + 1