Skip to main content

🟡 剑指 Offer II 061. 和最小的 k 个数对

LeetCode 提示

题目难度 中等

原题链接 🔗 leetcode

题解1#

优先队列是真的好用

class Solution {    public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {        var pq = new PriorityQueue<int[]>((x, y) -> {            return x[0] - y[0];        });
        for (int n1 : nums1) {            for (int n2 : nums2) {                pq.offer(new int[]{n1+n2, n1, n2});            }        }
        var res = new ArrayList<List<Integer>>();
        for (int i=0; i<k; i+=1) {            int[] cur = pq.poll();            if (cur == null) {                break;            }            res.add(Arrays.asList(cur[1], cur[2]));        }
        return res;    }}