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 次浏览

开启你的职业生涯

通过完成课程获得认证

立即开始
广告