373.查找和最小的K对数字
给定两个以升序排列的整数数组nums1和nums2,以及一个整数k。
定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自nums2。
请找到和最小的k个数对(u1,v1),(u2,v2).(英国,韩国).
来源:力扣(LeetCode)
链接:https://leet代码-cn。com/problems/find-k-对与最小和
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
导入Java。乌提尔。*;
解决方案类{
私有(同Internationalorganizations)国际组织哈希(int x,int y){ 0
返回(x ^ 1)* 100000y;
}
public ListListInteger ksmallestbaks(int[]nums 1,int[] nums2,int k){ 0
set integer visited=new HashSet();
ListListInteger ret=new ArrayList();
PriorityQueueint[]队列=新优先级队列(新比较队列[](){ 0
@覆盖
公共int compare(int[] o1,int[]O2){ 0
返回整数。比较(nums 1[O1[0]]nums 2[O1[1]],nums 1[O2[0]]nums 2[O2[1]]);
}
});
queue.offer(new int[]{0,0 });
visited.add(hash(0,0));
while (k - 0!排队。isempty()){ 0
int[]节点=队列。poll();
int x=节点[0],y=节点[1];
ret.add(Arrays.asList(nums1[x],nums 2[y]);
if (x 1 nums1.length!visited.contains(hash(x 1,y))){ 0
visited.add(hash(x 1,y));
queue.offer(new int[]{x 1,y });
}
if(y ^ 1 nums 2。长度!visited.contains(hash(x,y ^ 1))(
visited.add(hash(x,y ^ 1));
queue.offer(new int[]{x,y ^ 1 });
}
}
返回浸水使柔软
}
}
心之所向,素履以往生如逆旅,一苇以航
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147916.html