1. 程式人生 > 其它 >順序容器

順序容器

package leetcode;

import java.util.Comparator;
import java.util.PriorityQueue;

public class offer_40 {
    public int[] getLeastNumbers(int[] arr, int k) {
        int[] nums=new int[k];
        if(arr.length<=k) {return arr;}
        if(k<=0) {return nums;}
        
        //建立一個大根堆
        PriorityQueue<Integer> priority=new
PriorityQueue<Integer>(new Comparator<Integer>() { public int compare(Integer a,Integer b) { return b-a; } }); for(int i=0;i<k;i++) { priority.offer(arr[i]); } //如果當前節點小於根節點則替換根節點 for(int i=k;i<arr.length;i++) {
if(priority.peek()>arr[i]) { priority.poll(); priority.offer(arr[i]); } } //將大根堆中的節點值儲存在nums中 for(int i=0;i<k;i++) { nums[i]=priority.poll(); } return nums; } public static void main(String[] args) {
// TODO Auto-generated method stub offer_40 off=new offer_40(); int[] arr= {3,2,1}; off.getLeastNumbers(arr, 2); } }