博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4. Median of Two Sorted Arrays *HARD* -- 查找两个排序数组的中位数(寻找两个排序数组中第k大的数)...
阅读量:5280 次
发布时间:2019-06-14

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

There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

t int MAX = 0x7fffffff, MIN = 0x80000000;int kth(vector
& nums1, vector
& nums2, int sz1, int sz2, int k){#define N1(i) (i<1?MIN:(i>sz1?MAX:nums1[i-1]))#define N2(i) (i<1?MIN:(i>sz2?MAX:nums2[i-1])) int l, r, x; l = 0; r = sz1; while (l <= r) { x = (l + r) >> 1; if (N1(x) > N2(k - x + 1)) r = x - 1; else if (N1(x + 1) < N2(k - x)) l = x + 1; else return max(N1(x), N2(k - x)); } return 0; //should not get here#undef N1#undef N2}double findMedianSortedArrays(vector
& nums1, vector
& nums2) { int sz1 = nums1.size(), sz2 = nums2.size(), sz = sz1 + sz2; if (sz1 > sz2) return findMedianSortedArrays(nums2, nums1); if (sz & 1) return kth(nums1, nums2, sz1, sz2, (sz >> 1) + 1); return (kth(nums1, nums2, sz1, sz2, sz >> 1) + kth(nums1, nums2, sz1, sz2, (sz >> 1) + 1)) / 2.0;}

 

转载于:https://www.cnblogs.com/argenbarbie/p/5249124.html

你可能感兴趣的文章
站立会议第四天
查看>>
如何快速掌握一门技术
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>