順序容器
阿新 • • 發佈:2022-03-15
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=newPriorityQueue<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); } }