leetcode 347. Top K Frequent Elements 使用HashMap计数

来源:互联网 发布:金博宝芝林软件破解版 编辑:程序博客网 时间:2024/06/06 02:59

For example,
Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note:
You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
Your algorithm’s time complexity must be better than O(n log n), where n is the array’s size.

这道题很简单,直接使用HashMap计数,然后排序即可。

代码如下:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;class Solution {    public List<Integer> topKFrequent(int[] nums, int k)     {        List<Integer> res=new ArrayList<Integer>();        if(nums==null || nums.length<=0 || k<=0 || k>=nums.length+1)            return res;        Map<Integer, Integer> map=new HashMap<Integer, Integer>();        for(int i=0;i<nums.length;i++)            map.put(nums[i], map.getOrDefault(nums[i], 0)+1);        List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {            @Override            public int compare(Entry<Integer, Integer> a,Entry<Integer, Integer> b) {                               return b.getValue()-a.getValue();              } });        for(int i=0;i<k;i++)            res.add(list.get(i).getKey());        return res;    }}
原创粉丝点击