最大堆思想
package 剑指offer.堆;
import java.util.*;
public class t61和最小的K个数对forlearn {
public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k){
//新建一个最大堆
Queue<int[]> max_heap =new PriorityQueue<>((n1,n2)->n2[0]+n2[1]-n1[0-n1[1]]);
for(int i =0;i<Math.min(k,nums1.length);i++){
for (int j=0;j<Math.min(k,nums2.length);j++){
if(max_heap.size()<k){
max_heap.offer(new int[] {nums1[i],nums2[j]});
}else {
if(max_heap.peek()[0]+max_heap.peek()[1]>nums1[i]+nums2[j]){
max_heap.poll();
max_heap.offer(new int[]{nums1[i],nums2[j]});
}
}
}
}
List<List<Integer>> result =new LinkedList<>();
while (!max_heap.isEmpty()){
int[] val =max_heap.poll();
result.add(Arrays.asList(val[0],val[1]));
}
return result;
}
}