leetcode 之Median of Two Sorted Arrays(五)
2016-05-14 13:31
393 查看
double findMedianofTwoSortArrays(int A[], int B[], int m, int n) { int total = m + n; //判断序列长度的奇偶,奇数只有一个中间值,偶数有两个中间值,取平均 if (total & 0x1) return find_kth(A, m, B, n, total / 2 + 1); else return (find_kth(A, m, B, n, total / 2) + find_kth(A, m, B, n, total / 2 + 1)) / 2; } int find_kth(int A[], int m, int B[], int n, int k) { //设定m<=n if (m > n)return find_kth(B, n, A, m, k); if (m == 0)return B[k - 1]; if (k == 1)return min(A[0], B[0]); //删除掉一部分数据 int ia = min(k / 2, m), ib = k - ia; if (A[ia - 1] < B[ib - 1]) return find_kth(A + ia, m - ia, B, n, k - ia); else if (A[ia - 1]>B[ib - 1]) return find_kth(A, m, B + ib, m - ib, k - ib); else return A[ia - 1]; }
View Code
相关文章推荐
- 命名空间和程序集
- iOS长微博实现
- 从PAXOS到Zookeeper分布式一致性原理与实践
- 面试题
- hive 结合执行计划 分析 limit 执行原理
- Task运行过程分析1
- Git 怎么创建本地库,向本地库提交文件
- 第十二周项目1.2—实现复数类中的运算符重载(友元函数)
- 二叉树的前序中序后序遍历(当然是非递归的!)
- Linux中用户管理详解
- Java千百问_06数据结构(016)_引用类型数组在内存中如何储存
- 复杂链表复制
- CocoaPods的安装使用和常见问题
- 【牛腩新闻发布系统】 Web
- ucos II 系统学习之------任务延时函数
- Android作为服务器与PC作为客户端通过USB通信
- Spark的RDD简单操作
- Hive – Distinct 的实现
- iOS引用计数
- virsh console和shutdown的两个补充