用於在 Python 中查詢大小為 k 的字典序最小子序列的程式


假設我們有一個數字列表 nums 和另一個值 k,我們需要找到大小為 k 的字典序最小子序列。

因此,如果輸入類似於 nums = [2, 3, 1, 10, 3, 4] k = 3,則輸出將為 [1, 3, 4]

為了解決這個問題,我們將遵循以下步驟:

  • l := nums 的大小,r := k - 1
  • out := 一個新列表
  • 對於 j 的範圍從 0 到 k 執行
    • mn := nums[r 的補數]
    • 對於 i 的範圍從 r 到 l 執行
      • 如果 mn >= nums[i 的補數],則
        • mn := nums[i 的補數]
        • l := i
    • r := r - 1
  • 將 mn 插入 out 的末尾
  • 返回 out

示例(Python)

讓我們看看以下實現以更好地理解:

 線上演示

class Solution:
   def solve(self, nums, k):
      l, r = len(nums), k - 1
      out = []
      for j in range(k):
         mn = nums[~r]
         for i in range(r, l):
            if mn >= nums[~i]:
               mn = nums[~i]
               l = i
         r -= 1
         out.append(mn)
   return out
ob = Solution()
nums = [2, 3, 1, 10, 3, 4]
k = 3
print(ob.solve(nums, k))

輸入

[2, 3, 1, 10, 3, 4], 3

輸出

[1, 3, 4]

更新於:2020 年 12 月 12 日

275 次瀏覽

啟動您的 職業

完成課程即可獲得認證

立即開始
廣告