Python程序:查找最短子列表,排序后整个列表将按升序排序
假设我们有一个名为nums的数字列表,我们必须找到nums中最短子列表的长度,如果子列表已排序,则整个数组nums将按升序排序。
因此,如果输入类似于nums = [1,2,5,4,9,10],则输出将为2,因为对子列表[4, 3]进行排序将得到我们[0, 1, 3, 4, 8, 9]。(此处示例数字与描述不符,应修改示例)
为了解决这个问题,我们将遵循以下步骤:
- f:= -1, l:= -1
- lst:= 对列表nums进行排序
- 对于范围从0到nums大小的i,执行:
- 如果nums[i]与lst[i]不同,则:
- 如果f等于-1,则:
- f := i
- 否则:
- l := i
- 如果f等于-1,则:
- 如果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
广告