当前位置: 首页 > news >正文

网站架构设计师岗位要求郑州做网站推广

网站架构设计师岗位要求,郑州做网站推广,网络广告类型有哪几种,wordpress好看的个人博客主题文章目录 题目描述解题思路代码 题目链接 题目描述 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (…

文章目录

  • 题目描述
  • 解题思路
  • 代码

题目链接

题目描述

给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。

定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。

请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。

示例 1:

输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3
输出: [1,2],[1,4],[1,6]
解释: 返回序列中的前 3 对数:
[1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6]
示例 2:

输入: nums1 = [1,1,2], nums2 = [1,2,3], k = 2
输出: [1,1],[1,1]
解释: 返回序列中的前 2 对数:
[1,1],[1,1],[1,2],[2,1],[1,2],[2,2],[1,3],[1,3],[2,3]

提示:

1 <= nums1.length, nums2.length <= 105
-109 <= nums1[i], nums2[i] <= 109
nums1 和 nums2 均为 升序排列
1 <= k <= 104
k <= nums1.length * nums2.length

解题思路

参考

多路归并的方法来解决这个问题,因为我们是找前k个最小的数,那么我们可以这样来,
令 nums1 的长度为 n,nums2 的长度为 m,所有的点对数量为 n×m。

其中每个 nums1[i] 参与所组成的点序列为:

[(nums1[0],nums2[0]),(nums1[0],nums2[1]),…,(nums1[0],nums2[m−1])]
[(nums1[1],nums2[0]),(nums1[1],nums2[1]),…,(nums1[1],nums2[m−1])]
[(nums1[n−1],nums2[0]),(nums1[n−1],nums2[1]),…,(nums1[n−1],nums2[m−1])]
由于 nums1 和 nums2 均已按升序排序,因此每个 nums1[i] 参与构成的点序列也为升序排序,这引导我们使用「多路归并」来进行求解。

怎么做呢?
既然是多路排序,那就是把以前的二路排序扩展一下,现在我们使用n路排序,我们按照上面的分法,就可以把序列分成n行,然后,我们可以在这n行中每次选最小的一个就好啦,这样选k次,就是我们要的答案了。
具体怎么实现呢?
我们其实的时候买把这n个序列的第一个元素(以二元组(i,j))入队(优先队列,或者是小根堆),其中 i 为该点对中 nums1[i] 的下标,j 为该点对中 nums2[j]的下标,这里可以有一个小优化,我们始终确保nums1为两数组中长度较小的那个,然后通过标记来记录是否发生过交换,确保答案的点顺序的正确性。
每次从优先队列中取出堆顶元素(这个堆顶就是当前未被加入到答案的所有点对中的最小值)加入答案,并将该点对所在序列的下一位(如果有的话)加入到优先队列。

代码

class Solution {boolean flag = true;public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {int n = nums1.length, m = nums2.length;if(n > m && !(flag = false))return kSmallestPairs(nums2, nums1, k);List<List<Integer>> ans = new ArrayList<>();PriorityQueue<int[]> q = new PriorityQueue<>((a,b) -> (nums1[a[0]] + nums2[a[1]]) - (nums1[b[0]] + nums2[b[1]]));// 如果n>k的话,那我们其实只需要建立nums1的前k个序对就够了for(int i=0; i<Math.min(n, k) ;i++){q.add(new int[]{i,0});}while(ans.size() < k && !q.isEmpty()){int[] poll = q.poll();int a = poll[0], b= poll[1];ans.add(new ArrayList<>(){{add(flag ? nums1[a] : nums2[b]);add(flag ? nums2[b] : nums1[a]);}});if(b+1 < m)q.add(new int[]{a, b+1});}return ans;}
}
http://www.yayakq.cn/news/316048/

相关文章:

  • 温州市网站制作网站建设与管理任务分工
  • 网站建设开发多少钱网站排名点击
  • 好人一生平安网站哪个好怎么申请免费网址
  • php网站开发实例教程传智增城高端网站建设
  • 做淘宝设计能做网站吗淘宝网页打不开是什么原因
  • 网站开发和网络设计有什么区别云主题 wordpress
  • 线报网站如何做互动平台抽手机
  • 哈尔滨建站模板大全福建住房和城建设网站
  • 广安网站设计公司wordpress分类标签
  • 个人网站模板制作大连h5建站
  • 网站建设管理的规章制度标书制作简单吗
  • 康巴什住房和城乡建设局网站xshell如何做网站
  • 设计网站怎么设计免费网站建设视频教程
  • 企业网站怎么做优化做网站标签栏的图片大小
  • 企业网站建设一般考虑哪些因素wordpress 农场模板
  • 电脑路由器做网站服务器外国购物网站有哪些平台
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技网站制作合同注意事项
  • 深圳求做网站电梯行业网站怎么做
  • wordpress怎么登录网络优化app
  • 海北wap网站建设沈阳网站备案
  • 网站网站做代理高新区建网站外包
  • 网站建设与管理专业就业前景网站logo怎么做透明
  • 常规做网站要在工信部认证吗企业网站租服务器
  • 慈利网站开发做网站的编程语言组合
  • 网站推广需要多少钱网盘网页版登录入口
  • 商丘市有没有做网站菏泽兼职网站建设
  • 室内设计网站大全免费大型网页游戏排行榜
  • 怎样做网站挣钱phpcms 做购物网站
  • 网站建设试题以及答案网站建设ftp上传是空目录
  • 有人模仿qq音乐做的h5网站吗上海市建设市场管理信息平台网站