在Python中查找具有相同频率的最大频繁元素的最短子列表长度的程序

假设我们有一个名为 nums 的数字列表。如果 nums 中出现频率最高的数字的频率是 k。我们必须找到最短子列表的长度,使其最频繁项的频率也是 k。

所以,如果输入像 nums = [10, 20, 30, 40, 30, 10],那么输出将是 3,因为这里最频繁的数字是 10 和 30,这里 k = 2。如果我们选择sublist [30, 40, 30] 这是最短的子列表,其中 30 出现并且它的频率也是 2。

示例

让我们看看以下实现以获得更好的理解 -

from collections import Counter

def solve(nums):

   L = len(nums)

   rnums = nums[::-1]

   d = Counter(nums)

   mx = max(d.values())

   vs = [k for k in d if d[k] == mx]

   mn = L

   for v in vs:

      mn = min(mn, (L - rnums.index(v)) - nums.index(v))

   return mn

nums = [10, 20, 30, 40, 30, 10]

print(solve(nums))

输入

[10, 20, 30, 40, 30, 10]
输出结果
3

以上是 在Python中查找具有相同频率的最大频繁元素的最短子列表长度的程序 的全部内容, 来源链接: utcz.com/z/352614.html

回到顶部