Leetcode 04 Median of Two Sorted Arrays
2015-06-24 00:09
344 查看
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)).
class Solution { private: typedef vector<int>::const_iterator ITE; public: double findkth(ITE l1, ITE r1, ITE l2, ITE r2, int k) { if (r1 - l1 > r2 - l2) return findkth(l2, r2, l1, r1, k); if (l1==r1) return *(l2+k-1); if (k == 1) return min(*l1, *l2); int pa = min(int(r1 - l1), k / 2), pb = k - pa; ITE lpa = l1 + pa - 1, lpb = l2 + pb - 1; if (*lpa < *lpb) return findkth(l1 + pa, r1, l2, r2, pb); else if (*lpa > *lpb) { return findkth(l1, r1, l2 + pb, r2, pa); } else { return *lpa; } } double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(), n = nums2.size(), total = m + n; ITE l1 = nums1.begin(), r1 = nums1.end(); ITE l2 = nums2.begin(), r2 = nums2.end(); if (total % 2) return findkth(l1, r1, l2, r2, total / 2 + 1); else { return (findkth(l1, r1, l2, r2, total / 2) + findkth(l1, r1, l2, r2, total / 2 + 1))/2; } } };
相关文章推荐
- .Net学习笔记----2015-06-23(继承(里氏转换))
- PHP时间戳 strtotime()使用方法和技巧
- 为VisualSVN Server增加在线修改用户密码的功能
- 杭电ACM----------1004 Let the Balloon Rise
- Supercell WIP01
- 学习过程中有关python的错误合集
- Servlet (二) HttpServletRequest 获取值
- Datazen自定义地图
- jQuery的一些一些小知识点的用法的介绍
- 互联网金融——电子货币的玩法
- Linux链表
- linux日志审计项目案例实战(生产环境日志审计项目解决方案)
- MySQL优化之——自定义存储过程和函数
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- Datazen自定义地图
- 关于angularjs的一些小知识点
- 学习笔记-基础知识8-集合框架(1)下
- 【HTTPS】Https和SSL学习笔记(一)
- leetcode 8 String to Integer (atoi)
- 使用log4j生成日志文件