Let’s see the Portal
Give the code next.
public class Solution {
public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) {
List<int[]> ret = new LinkedList<int []>();
if (nums1.length == 0 || nums2.length == 0 || k == 0) return ret;
int[] index = new int[nums1.length];
//index[i] is used to get the nums1[i]'s indicator that has been to used
while (k-- > 0) {
int min_val = Integer.MAX_VALUE;
int ind = -1;
for (int i = 0; i < nums1.length; i++) {
if (index[i] >= nums2.length) {
continue;
}
if (nums1[i] + nums2[index[i]] < min_val) {
min_val = nums1[i] + nums2[index[i]];
ind = i;
}
}
// if the ind = i doesn't happen,
// because (index[i] >= nums2.length), so always continue. That means if
// nums1.length = 3, nums2.length, but the k = 20 (which is a sad story),
// it can break this while loop
if (ind == -1) {
break;
}
int[] temp = {nums1[ind], nums2[index[ind]]};
ret.add(temp);
index[ind]++;
}
return ret;
}
}
How to calculate the time complexity?
Time complexity is O(K*M), where m is the length of the shorter array.