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
  • 如果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

更新于:2020年10月5日

浏览量:175

开始您的职业生涯

完成课程后获得认证

开始
广告