Top k Largest Numbers II

来源:互联网 发布:js api 编辑:程序博客网 时间:2024/05/17 22:44

Implement a data structure, provide two interfaces:

  1. add(number). Add a new number in the data structure.
  2. topk(). Return the top k largest numbers in this data structure. k is given when we create the data structure.
Example
s = new Solution(3);>> create a new data structure.s.add(3)s.add(10)s.topk()>> return [10, 3]s.add(1000)s.add(-99)s.topk()>> return [1000, 10, 3]s.add(4)s.topk()>> return [1000, 10, 4]s.add(100)s.topk()>> return [1000, 100, 10]
public class Solution {    /*    * @param k: An integer    */    Queue<Integer> queue;    int val;    public Solution(int k) {        // do intialization if necessary        queue = new PriorityQueue<Integer>();        val = k;    }    /*     * @param num: Number to be added     * @return: nothing     */    public void add(int num) {        // write your code here        queue.offer(num);    }    /*     * @return: Top k element     */    public List<Integer> topk() {        // write your code here        List<Integer> list = new ArrayList<>();        while (!queue.isEmpty()) {            list.add(queue.poll());        }        for (int i = 0; i < list.size(); i++) {            queue.offer(list.get(i));        }        Collections.reverse(list);        if (list.size() < val) {            return list;        } else {            return list.subList(0, val);        }            }}


原创粉丝点击