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

開始您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.