在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