TopK问题

出现次数最多的K个

解题步骤:

  1. 把所有的数据存到map里
  2. 构造K个的大根堆
  3. 输出大根堆

第K大的数

解题步骤:

方法一:对所有元素进行排序,之后取出前K个元素,不提倡使用
方法二:只需要对前K个元素排序,不需要对N-K个元素进行排序,不提倡使用
方法三:利用hash保存数组中元素Si出现的次数,利用计数排序的思想,线性从大到小扫描过程中,前面有k-1个数则为第k大数,

最大/最小的前K个数

解题步骤:

  1. 挑出前K个树组成大根堆/小根堆
  2. 从K+1到N与大根堆最大/小的树比较,如果大/小就替换他
  3. 输出大根堆

你可能感兴趣的:(TopK问题)