LeetCode--373. Find Pairs with Smallest Sums

来源:互联网 发布:api原油库存今天数据 编辑:程序博客网 时间:2024/06/06 01:42

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.

0 0
原创粉丝点击