Python程式:將列表拆分為大小大於k的嚴格遞增子列表


假設我們有一個名為nums的數字列表,以及另一個值k,我們需要檢查是否可以將列表拆分為子列表,使得每個子列表的長度≥k並且嚴格遞增。列表不需要連續拆分。

因此,如果輸入類似於nums = [6, 7, 5, 10, 13] k = 2,則輸出將為True,因為拆分結果為[5, 6]和[7, 10, 13]。

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

  • c := 一個包含nums元素及其計數的對映
  • max_count := c中所有頻率的最大值
  • 當max_count * k <= nums的大小,則返回True,否則返回false

示例(Python)

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

 線上演示

from collections import Counter
class Solution:
   def solve(self, nums, k):
      c = Counter(nums)
      max_count = max([v for k, v in c.items()])
      return max_count * k <= len(nums)
ob = Solution()
nums = [6, 7, 5, 10, 13]
k = 2
print(ob.solve(nums, k))

輸入

[6, 7, 5, 10, 13], 2

輸出

False

更新於: 2020年12月12日

139 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告