Title Description:
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]
.
Note:
- You may assume K are 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.
Problem Solving Ideas:
Using HashMap count
The code is as follows:
public class Solution {public list<integer> topkfrequent (int[] nums, int k) { Map<integer, integer> Map = new Hashmap<integer, integer> (); list<integer>[] Freqarray = new List[nums.length + 1]; for (int num:nums) { map.put (num, map.getordefault (num, 0) + 1); } for (int key:map.keySet ()) { int freq = Map.get (key); if (freqarray[freq] = = null) Freqarray[freq] = new arraylist<integer> (); Freqarray[freq].add (key); } list<integer> res = new arraylist<> (); for (int i = freqarray.length-1; I >= 0 & Res.size () < K; i--) { if (freqarray[i]! = null) Res.addall (f Reqarray[i]); } return res; }}
Java [Leetcode 347]top K Frequent Elements