Hi, what about the solution where we compare the element values and move index accordingly?
I’m only looping k times and it’s working for various arrays I tried. Could you please review this solution?
fun findKLargestPairs(nums1: IntArray, nums2: IntArray, k: Int): List<IntArray> {
var result = mutableListOf<IntArray>()
var i = 0
var j = 0
while (result.size < k) {
result.add(intArrayOf(nums1[i], nums2[j]))
if (i < nums1.lastIndex && nums1[i + 1] >= nums2[j]) {
i++
}
else {
i = 0
j = if (j == nums2.lastIndex) { 0 ; i++ } else { j + 1 }
}
}
return result
}
fun main() {
var l1 = intArrayOf(9, 8, 2)
var l2 = intArrayOf(6, 3, 1)
var result = findKLargestPairs(l1, l2, 3)
print("Pairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
l1 = intArrayOf(5, 2, 1)
l2 = intArrayOf(2, -1)
result = findKLargestPairs(l1, l2, 3)
print("\nPairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
l1 = intArrayOf(8, 7, 6)
l2 = intArrayOf(2, -1)
result = findKLargestPairs(l1, l2, 3)
print("\nPairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
l1 = intArrayOf(8, 7, 6)
l2 = intArrayOf(20, 11)
result = findKLargestPairs(l1, l2, 3)
print("\nPairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
l1 = intArrayOf(14)
l2 = intArrayOf(20, 11)
result = findKLargestPairs(l1, l2, 2)
print("\nPairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
l1 = intArrayOf(20, 11, 8, 2)
l2 = intArrayOf(14)
result = findKLargestPairs(l1, l2, 2)
print("\nPairs with largest sum are: ")
for (pair in result) print("[" + pair[0] + ", " + pair[1] + "] ")
}