leetcode 347. Top K Frequent Elements
2016-05-27 11:44
513 查看
题目内容
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:
题目分析
通过hashmap确定所有值出现的频率,通过频率的排序来找出top k。建立数组,以数组的index作为频率的值。
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 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确定所有值出现的频率,通过频率的排序来找出top k。建立数组,以数组的index作为频率的值。
public class Solution { public List<Integer> topKFrequent(int[] nums, int k) { List<Integer>[] buk = new List[nums.length+1];//注意这里的+1 Map<Integer,Integer> frequencyMap = new HashMap<Integer,Integer>();//构建hashmap for(int n : nums) frequencyMap.put(n,frequencyMap.getOrDefault(n,0)+1);//找到频率 for(int key : frequencyMap.keySet()){ int frequency = frequencyMap.get(key); if(buk[frequency]==null) buk[frequency]=new ArrayList<Integer>();//以频率的值为index初始化list buk[frequency].add(key); } List<Integer> ans =new ArrayList<Integer>(); for(int pos=buk.length-1;pos>=0&&ans.size()<k;pos--) { if(buk[pos]!=null) ans.addAll(buk[pos]); } return ans; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解