假设我们有一个称为nums的数字列表,我们必须找到num中最短子列表的长度,如果该子列表已排序,则整个数组nums将以升序排序。
因此,如果输入类似于nums = [1,2,5,4,9,10],则输出将为2,因为对子列表[4,3]进行排序将得到我们[0,1,3,4 ,8、9]
为了解决这个问题,我们将遵循以下步骤-
f:= -1,l:= -1
lst:=对列表中的数字进行排序
对于范围从0到nums的i,执行
如果f与-1相同,则
除此以外,
f:=我
l:=我
如果nums [i]与lst [i]不同,则
如果l与-1相同且f与-1相同,则
返回0
返回l-f + 1
让我们看下面的实现以更好地理解-
class Solution: def solve(self, nums): f=-1 l=-1 lst=sorted(nums) for i in range(len(nums)): if nums[i]!=lst[i]: if f == -1: f=i else: l=i if l == -1 and f == -1: return 0 return l-f+1 ob = Solution() print(ob.solve([1,2,5,4,9,10]))
[1,2,5,4,9,10]
输出结果
2