AI工具人
提示词工程师

Leetcode 347.Top K Frequent Elements

Top K Frequent Elements
  一句话理解题意:输出数组中出现次数对多的k个数。
  在如果用C语言来写这个题目,思路就是先按数的大小排序,然后再用一个结构体数组保存每个数的出现次次数。 因为数组已经有序了,所以只需要遍历一次数组就可以获得每个数的出现次数了。 结构体如下

strut node 
{
    int num;       //保存数组中的数
    int count;     //这个数出现的次数
}

  然后对这个结构体数组按照count由大到小排序,返回前k个,此题得解。 如果我们排序都用快速排序,最终的时间复杂度是O(nlogn)+O(nlogn)+O(n),还是O(n*logn),符合题目要求。 但如果使用C语言,我们需要自己写排序算法,自己去开考虑很多细节,而改用Java的话,java自带的各种库函数将大大简化本提的难度。
  我们用map来存储每个数和每个数出现次数的对于关系,然后直接调用Collections的sort方法对map list化后的集合排序,这里我们只需要重载下Comparator类的compare函数即可。 我的代码如下。

赞(1) 打赏
未经允许不得转载:XINDOO » Leetcode 347.Top K Frequent Elements
描述文字

评论 1

  1. #1

    I have noticed you don’t monetize your website, don’t waste your traffic,
    you can earn extra cash every month because you’ve
    got hi quality content. If you want to know how to make extra bucks, search for:
    Mrdalekjd methods for $$$

    FirstDaniella9年前 (2017-10-09)回复

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫