LeetCode Top K Frequent Elements

来源:互联网 发布:酒店网络设计方案 编辑:程序博客网 时间:2024/06/05 05:44

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].


Solution:

感觉主要就是用HashMap和PriorityQueue。


import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.PriorityQueue;import java.util.TreeMap;class keypair implements Comparable<keypair> {int key;int pair;keypair(int k, int p) {this.key = k;this.pair = p;}public int compareTo(keypair arg0) {return this.pair - arg0.pair;}}public class Solution {public List<Integer> topKFrequent(int[] nums, int k) {TreeMap<Integer, Integer> map = new TreeMap<Integer, 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);}}PriorityQueue<keypair> queue = new PriorityQueue<keypair>();for (Iterator<Integer> iter = map.keySet().iterator(); iter.hasNext();) {int key = iter.next();queue.add(new keypair(key, map.get(key)));}List<Integer> list = new LinkedList<Integer>();for (int i = 0; i < k; i++) {list.add(queue.poll().key);}return list;}}


0 0
原创粉丝点击