Find K Pairs with Smallest Sums LeetCode solution in Rust
1impl Solution {2pub fn k_smallest_pairs(nums1: Vec<i32>, nums2: Vec<i32>, k: i32) -> Vec<Vec<i32>> {3use std::cmp::Reverse;4use std::collections::BinaryHeap;56let mut heap: BinaryHeap<(Reverse<i32>, usize, usize)> = (0..nums1.len())7.map(|i| (Reverse(nums1[i] + nums2[0]), i, 0))8.collect();9let mut ret = Vec::with_capacity(k as usize);1011while let Some((_, i, j)) = heap.pop() {12ret.push(vec![nums1[i], nums2[j]]);13if ret.len() == k as usize {14break;15}1617if j + 1 < nums2.len() {18heap.push((Reverse(nums1[i] + nums2[j + 1]), i, j + 1));19}20}21ret22}23}