LeetCode: Median of Two Sorted Arrays
来源:互联网 发布:金城武哪里帅了知乎 编辑:程序博客网 时间:2024/06/07 06:46
There are two sorted arrays A and B 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 {public: double findMedianSortedArrays(int A[], int m, int B[], int n) { if((m+n) % 2 == 0) return (helper(A, m, B, n, (m+n)/2) + helper(A, m, B, n, (m+n)/2 - 1)) / 2.0; else return helper(A, m, B, n, (m+n)/2); }private: int helper(int A[], int m, int B[], int n, int k) { if(m == 0) { return B[k]; } if(n == 0) return A[k]; if(k == 0) return std::min(A[0], B[0]); if(m/2 + n/2 > k) { if(A[m/2] >= B[n/2]) { return helper(A, m/2, B, n, k); } else { return helper(A, m, B, n/2, k); } } else { if(A[m/2] >= B[n/2]) { return helper(A, m, B+(n/2), (n+1)/2 - 1, k-(n+1 - (n+1)/2)); } else { return helper(A + m/2, (m+1)/2 - 1, B, n, k-(m+1 - (m+1)/2)); } } } };
Round 2:
class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size()-1; int n = nums2.size()-1; int k = (m + n + 2)/2; if((m + n) % 2 == 0) { return ((getMedian(0, m, 0, n, nums1, nums2, k) + getMedian(0, m, 0, n, nums1, nums2, k-1)) / 2.0f); } else { return getMedian(0, m, 0, n, nums1, nums2, k); } }private: double getMedian(int s1, int e1, int s2, int e2, vector<int> &nums1, vector<int> &nums2, int k) { if(s1 > e1) return nums2[s2 + k]; if(s2 > e2) return nums1[s1 + k]; if(k == 0) return std::min(nums1[s1], nums2[s2]); int m = e1 - s1 + 1; int n = e2 - s2 + 1; if(k == m/2 + n/2 && nums1[s1 + m/2] == nums2[s2 + n/2]) { return nums1[s1 + m/2]; } if(m/2 + n/2 >= k) { if(nums1[s1 + m/2] > nums2[s2 + n/2]) { return getMedian(s1, s1 + m/2 - 1, s2, e2, nums1, nums2, k); } else { return getMedian(s1, e1, s2, s2 + n/2 - 1, nums1, nums2, k); } } else { if(nums1[s1 + m/2] > nums2[s2 + n/2]) { return getMedian(s1, e1, s2 + n/2 + 1, e2, nums1, nums2, k - n/2 - 1); } else { return getMedian(s1 + m/2 + 1, e1, s2, e2, nums1, nums2, k - m/2 - 1); } } }};
0 0
- LeetCode: Median of Two Sorted Arrays
- LeetCode Median of Two Sorted Arrays
- leetcode 26: Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- [Leetcode] Median of Two Sorted Arrays
- LeetCode 4 - Median of Two Sorted Arrays
- [LeetCode]Median of Two Sorted Arrays
- leetcode Median of Two Sorted Arrays
- LeetCode-Median of Two Sorted Arrays
- [LeetCode] Median of Two Sorted Arrays
- [LeetCode] Median of Two Sorted Arrays
- [leetcode] Median of Two Sorted Arrays
- leetcode-004:Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- leetcode之 median of two sorted arrays
- 【转载】【leetcode】Median of Two Sorted Arrays
- LeetCode - Median of Two Sorted Arrays
- [LeetCode]Median of Two Sorted Arrays
- c++ – 标准容器可以继承吗
- centos6.5下安装codeblocks过程记录
- HDU 5131 Song Jiang's rank list (14广州 排序 水题)
- Spark安装和使用
- 如何设定App的推广目标?
- LeetCode: Median of Two Sorted Arrays
- 师兄教你和面试官扯淡
- 通过制作Flappy Bird了解Native 2D中的Sprite,Animation
- 杭电acm2058
- USACO section2.4 Fractions to Decimals题解&代码
- 正则表达式-01 初识
- 关于Zend Studio 10.6.2的破解
- 乔布斯-远见的疯狂驱动
- C 语言指针