Given a non-empty array of integers, return thekmost frequent elements.
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.
our algorithm's time complexity must be better than O(nlogn), where n is the array's size.
思路: hashMap 一下, 然后建立一个list<Integer> 的数组用来存数字, 数组的索引就是数字重复出现的字数。这样出现数字次数最多的就存在数组的后端。 从后读数组的值取出返回。
还有一个O(nLogn )的方法, 重点在于set 没法排序于是把set转成list 再排序:
List<Map.Entry<Integer, Integer>> entry = new LinkedList<>(map.entrySet());