描述
有一个不为空且仅包含正整数的数组,找出其中出现频率最高的前 K 个数,时间复杂度必须在 O(n log n) 以内。
输入
一行数据包括两部分,一个正整数数组(数字间 ',' 分隔)和一个正整数 K (1 ≤ K ≤ 数组长度),数组和 K 之间有一个空格。
输出
输出包含前 K 个出现频率最高的数(出现频率相同时,较小的数在前),用 ', ' 分隔,保证升序排列。
输入样例
1,1,1,2,2,3 2
输出样例
1,2
import sys
from collections import Counterresult = []
for line in sys.stdin:data, num = line.strip().split()num = int(num)data = list(map(int,data.strip().split(',')))data = Counter(data)data = sorted(data.items(), key=lambda x: (x[1], -x[0]), reverse=True) # 多键值排序temp = []for i in range(num):temp.append(data[i][0])temp = ",".join(map(str, temp))result.append(temp)print("\n".join(map(str,result)))