classSolution{boolean flag =true;publicList<List<Integer>>kSmallestPairs(int[] nums1,int[] nums2,int k){List<List<Integer>> ans =newArrayList<>();int n = nums1.length, m = nums2.length;if(n > m &&!(flag =false))returnkSmallestPairs(nums2, nums1, k);PriorityQueue<int[]> q =newPriorityQueue<>((a,b)->(nums1[a[0]]+nums2[a[1]])-(nums1[b[0]]+nums2[b[1]]));for(int i =0; i <Math.min(n, k); i++)
q.add(newint[]{i,0});while(ans.size()< k &&!q.isEmpty()){int[] poll = q.poll();int a = poll[0], b = poll[1];
ans.add(newArrayList<>(){{add(flag ? nums1[a]: nums2[b]);add(flag ? nums2[b]: nums1[a]);}});if(b +1< m)
q.add(newint[]{a, b +1});}return ans;}}