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