程序查找最短的子列表,以便在排序后将整个列表用Python排序
假设我们有一个称为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