1. 程式人生 > >Leetcode題解 347. Top K Frequent Elements

Leetcode題解 347. Top K Frequent Elements

Given a non-empty array of integers, return the k most frequent elements.

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

用桶排序來做最後處理。

public class Solution {
    public List<Integer> topKFrequent(int[] nums, int k) {

        //step1—用雜湊表統計陣列中各元素出現的頻次,表中“鍵”為元素數值,“值”為對應元素出現的頻次
        Map<Integer,Integer> map
=new HashMap<Integer,Integer>(); for(int num:nums)//遍歷陣列 { if(map.get(num)==null)//如果“鍵”為num的資料首次出現,則“值”設為1 map.put(num, 1); else map.put(num, map.get(num)+1);//重複出現,則累計頻次 } List<Integer>[] list=new ArrayList[nums.length+1
]; for(int key:map.keySet()){ int count=map.get(key); if(list[count]==null) list[count]=new ArrayList(); list[count].add(key); } List<Integer> result=new ArrayList(); for(int i=nums.length;i>=0;i--){ if
(list[i]!=null&&result.size()<k){ result.addAll(list[i]); } } return result; } }