373. Find K Pairs with Smallest Sums
2017-02-24 08:21
344 查看
这道题和上一道很类似,就等于是把两个 数组分别作为一列和一行,然后拼成一个矩阵,当然,没有必要去正真生成一个矩阵去加和,那就傻了,耗费时间和空间
只要通过自定义Tuple,按照sum来排序,通过PriorityQueue来维护最小元素,就可以了
代码如下,就这道题来说,还是性能很高的 80-90%
只要通过自定义Tuple,按照sum来排序,通过PriorityQueue来维护最小元素,就可以了
代码如下,就这道题来说,还是性能很高的 80-90%
public class Solution { public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) { List<int[]> list = new ArrayList<int[]>(); int n=nums1.length; int m=nums2.length; if(n==0 || m==0) return list; // 除了这个判断,一遍 bug-free PriorityQueue<Tuple> pq = new PriorityQueue<Tuple>(); for(int i=0; i<m; i++) pq.add(new Tuple(0, i, nums1[0]+nums2[i])); for(int i=0; i<Math.min(k, n*m); i++){ Tuple out= pq.poll(); list.add(new int[]{nums1[out.index1], nums2[out.index2]}); if(out.index1==n-1) continue; pq.add(new Tuple(out.index1+1, out.index2, nums1[out.index1+1]+nums2[out.index2])); } return list; } } class Tuple implements Comparable<Tuple>{ int index1, index2, sum; public Tuple(int x, int y, int sum){ this.index1=x; this.index2=y; this.sum=sum; } @Override public int compareTo(Tuple that){ return this.sum-that.sum; } }
相关文章推荐
- leetcode 373. Find K Pairs with Smallest Sums 优先队列
- 373. Find K Pairs with Smallest Sums(unsolved)
- 373. Find K Pairs with Smallest Sums
- [Leetcode] 373. Find K Pairs with Smallest Sums 解题报告
- LeetCode[373] Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums (java,优先队列)
- 373. Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums
- leetcode:heap:Find K Pairs with Smallest Sums(373)
- Leetcode373: Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums
- leetcode_373 Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums
- [leetcode] 373. Find K Pairs with Smallest Sums 解题报告
- LeetCode 373 Find K Pairs with Smallest Sums
- 373. Find K Pairs with Smallest Sums
- leetcode 373. Find K Pairs with Smallest Sums 暴力循环求解
- leetcode 373 Find K Pairs with Smallest Sums java
- [LeetCode] 373. Find K Pairs with Smallest Sums 找和最小的K对数字