Leetcode--347. 前k个高频元素
給定一個非空的整數數組,返回其中出現頻率前?k?高的元素。
示例 1:
輸入: nums = [1,1,1,2,2,3], k = 2
輸出: [1,2]
示例 2:
輸入: nums = [1], k = 1
輸出: [1]
說明:
你可以假設給定的?k?總是合理的,且 1 ≤ k ≤ 數組中不相同的元素的個數。
你的算法的時間復雜度必須優于 O(n log n) ,?n?是數組的大小。
思路:把數字與對應的個數存入哈希表,排序
提交的代碼:
class?Solution?{
????public?static?List<Integer>?topKFrequent(int[]?nums,?int?k)?{
????????Map<Integer,Integer>?map?=?new?HashMap<>();
????????List<Integer>?result?=?new?ArrayList<Integer>();
????????for(int?i=0;i<nums.length;i++)
????????{
????????????if(map.containsKey(nums[i]))
????????????{
????????????????map.put(nums[i],?map.get(nums[i])+1);
????????????}
????????????else
????????????{
????????????????map.put(nums[i],?1);
????????????}
????????}
????????List<Map.Entry<Integer,?Integer>>?entryList?=?new?ArrayList<Map.Entry<Integer,?Integer>>(map.entrySet());
????????Collections.sort(entryList,?mapComparator);
????????int?j?=?0;
????????for?(Map.Entry<Integer,?Integer>?entry?:?entryList)?{
????????????if?(j?>=?k)?{
????????????????break;
????????????}
????????????result.add(entry.getKey());
????????????j++;
????????}
????????return?result;
????}
????static?Comparator<Map.Entry<Integer,?Integer>>?mapComparator?=?new?Comparator<Map.Entry<Integer,?Integer>>()?{
????????@Override
????????public?int?compare(Map.Entry<Integer,?Integer>?item1,?Map.Entry<Integer,?Integer>?item2)?{
????????????return?item2.getValue()?-?item1.getValue();
????????}
????};
}
?
總結
以上是生活随笔為你收集整理的Leetcode--347. 前k个高频元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--174. 地下城游戏
- 下一篇: request.getAttribute