博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
373. Find K Pairs with Smallest Sums
阅读量:7141 次
发布时间:2019-06-28

本文共 1063 字,大约阅读时间需要 3 分钟。

373. Find K Pairs with Smallest Sums

题目链接:

greedy: 先把一组x里面和另外一组y最小元素的组合放进heap,然后每次poll出和最小的,同时放进去有可能成为第二小的组合,即当前y元素的下一个和x元素的组合。

public class Solution {    public List
kSmallestPairs(int[] nums1, int[] nums2, int k) { if(nums1.length == 0 || nums2.length == 0) return new ArrayList(); // heap: [nums1[i], nums2[j], i, j] PriorityQueue
minHeap = new PriorityQueue<>(k, (a, b) -> a[0] + a[1] - (b[0] + b[1])); // add combination of element from one array with the first element of another for(int i = 0; i < Math.min(nums1.length, k); i++) { minHeap.offer(new int[] {nums1[i], nums2[0], i, 0}); } // greedy List
result = new ArrayList(); while(k-- > 0 && !minHeap.isEmpty()) { int[] cur = minHeap.poll(); int i = cur[2], j = cur[3]; result.add(new int[] {cur[0], cur[1]}); if(j + 1 < nums2.length) minHeap.offer(new int[] {nums1[i], nums2[j + 1], i, j + 1}); } return result; }}

转载地址:http://dmmrl.baihongyu.com/

你可能感兴趣的文章
第一周
查看>>
基于Wisense平台创建的某公司财务审批系统分析
查看>>
2012/11/06——记一小笔
查看>>
Go调试工具—— Delve
查看>>
linux下查找某个文件位置的方法
查看>>
Android截图截取弹框AlertDialog
查看>>
104. Maximum Depth of Binary Tree(C++)
查看>>
DBA_实践指南系列11_Oracle Erp R12性能调优基础(案例)
查看>>
用二进制进行权限管理
查看>>
自己喜欢的编辑器字体设置
查看>>
react文档demo实现输入展示搜索结果列表
查看>>
RocketMQ源码 — 四、 Consumer 接收消息过程
查看>>
关于mybatis获取主键
查看>>
List
查看>>
设置抓包工具Fiddler的host
查看>>
Python-Day6
查看>>
终生不得心脏病的简单方法
查看>>
iOS UIScrollView 滚动到当前展示的视图居中展示
查看>>
MyFaces Core v2.0.7/2.1.1 发布,JSF框架
查看>>
python2输出中文乱码问题
查看>>