程序查找最短的子列表,以便在排序后将整个列表用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