摘要:利用特點進行排序。我們需要構建一個數據結構,一個表示在的位置,一個表示在的位置,他們的和,用來排序。我們首先向里,和所有的元素的和。每次我們一組數,然后增加的會自然的進行排序。
Given nums1 = [1,7,11], nums2 = [2,4,6], k = 3 Return: [1,2],[1,4],[1,6] The first 3 pairs are returned from the sequence: [1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6]
利用pq特點進行排序。 我們需要構建一個數據結構,一個pos表示在nums1的位置,一個pos表示在nums2的位置,他們的和,用來排序。 我們首先向PQ里offer,nums1[0] 和 所有nums2的元素的和。 每次我們poll一組數,然后增加nums1的pos, pq會自然的進行排序。操作K次就行了。
public class Solution { public ListkSmallestPairs(int[] nums1, int[] nums2, int k) { List res = new ArrayList (); if(nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0 || k < 0) return res; PriorityQueue pq = new PriorityQueue (new Comparator (){ public int compare(int[] a, int[] b){ return a[2] - b[2]; } }); int m = nums1.length, n = nums2.length; for(int i = 0; i < n; i++){ // t[0] pos in nums1, t[1] pos in nums2, val nums[t[0]]+nums[t[1]] pq.offer(new int[]{0, i, nums1[0] + nums2[i]}); } for(int i = 0; i < Math.min(k, m*n); i++){ int[] t = pq.poll(); res.add(new int[]{nums1[t[0]], nums2[t[1]]}); if(t[0] == m-1) continue; pq.offer(new int[]{ t[0] + 1, t[1], nums1[t[0] + 1] + nums2[t[1]] }); } return res; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70081.html
摘要:題目鏈接先把一組里面和另外一組最小元素的組合放進,然后每次出和最小的,同時放進去有可能成為第二小的組合,即當前元素的下一個和元素的組合。 373. Find K Pairs with Smallest Sums 題目鏈接:https://leetcode.com/problems... greedy: 先把一組x里面和另外一組y最小元素的組合放進heap,然后每次poll出和最小的,同...
摘要:題目要求兩個單調遞增的整數數組,現分別從數組和數組中取一個數字構成數對,求找到個和最小的數對。思路這題采用最大堆作為輔助的數據結構能夠完美的解決我們的問題。每從堆中取走一個數對,就插入,從而確保堆中的數對都可以從小到大遍歷到。 題目要求 You are given two integer arrays nums1 and nums2 sorted in ascending order ...
摘要:復雜度是,其中。這做法和異曲同工。看了網上給的解法,沒有二分,二分的是結果。每次找到一個,然后求比它小的元素的個數,根據個數大于還是小于來二分。參考算的時候可以優化 378. Kth Smallest Element in a Sorted Matrix 題目鏈接:https://leetcode.com/problems... 求矩陣里面第k小的數,首先比較容易想到的是用heap來做...
閱讀 1980·2021-09-26 10:19
閱讀 3249·2021-09-24 10:25
閱讀 1623·2019-12-27 11:39
閱讀 1919·2019-08-30 15:43
閱讀 663·2019-08-29 16:08
閱讀 3504·2019-08-29 16:07
閱讀 902·2019-08-26 11:30
閱讀 1270·2019-08-26 10:41