Median of Two Sorted Arrays
2015-08-09 21:53
295 查看
Median of Two Sorted Arrays
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)).思路:题目由于限制了时间复杂度的要求,因此不是很容易,否则一次快排即可解决,O(log (m+n))的思路来自于Median of Two Sorted Arrays,其中findKValue函数稍加修改。
class Solution { public: int findKValue(vector<int> a, vector<int> b, int k){ int m = a.size(), n = b.size(); if(m > n){ swap(a, b); swap(m, n); } if(m == 0) return b[k - 1]; if(k == 1) return min(a[0], b[0]); int pa = min(k / 2, m); int pb = k - pa; if(a[pa - 1] < b[pb - 1]){ a.erase(a.begin(),a.begin()+pa); return findKValue(a, b, k - pa); } else if(a[pa - 1] > b[pb - 1]){ b.erase(b.begin(),b.begin()+pb); return findKValue(a, b, k - pb); } else return a[pa - 1]; } double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int total = nums1.size() + nums2.size(); if(total & 0x1) return findKValue(nums1, nums2, total / 2 + 1 ); else return (findKValue(nums1, nums2, total / 2) + findKValue(nums1, nums2, total / 2 + 1)) / 2.0; } };
相关文章推荐
- 计蒜客 难题题库 019 加一
- Android Framework 记录之一
- POJ 2481-Cows(BIT)
- HTML <video> 标签
- 【C/C++】浅谈C/C++之深浅拷贝
- 递归实现集合全排列
- 计蒜客 难题题库 018 跳跃游戏
- 多功能图片压缩工具 类
- SSH整合环境下Spring配置文件的配置
- JavaScript基础学习之-JavaScript权威指南第八章--函数
- java异常处理机制
- 计蒜客 难题题库 017 X的平方根
- Java常用排序算法/程序员必须掌握的8大排序算法
- LA4043 - Ants(二分图完备最佳匹配KM)
- java里的static和final
- Crond定时任务详细分析
- HTML基础(一)
- Linux - mail
- Linux - mail
- 计蒜客 难题题库 016 爬楼梯