leetcode:Median of Two Sorted Arrays

来源:互联网 发布:linux连不通数据库端口 编辑:程序博客网 时间:2024/04/30 16:25

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)).

Subscribe to see which companies asked this question

Show Tags

Have you met this question in a real interview?


class Solution {    private:    double findKthSortedArrays(int nums1[], int m, int nums2[], int n, int k) {                if (m > n)            return findKthSortedArrays(nums2, n, nums1, m, k);                    if (m == 0)            return nums2[k-1];                    if (k == 1)            return min(nums1[0], nums2[0]);                    int p1 = min(k/2, m);        int p2 = k-p1;                if (nums1[p1-1] == nums2[p2-1])            return nums1[p1-1];        else if(nums1[p1-1] < nums2[p2-1])            return findKthSortedArrays(nums1+p1, m-p1, nums2, n, k-p1);        else            return findKthSortedArrays(nums1, m, nums2+p2, n-p2, k-p2);            }    public:    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {                int totalLen = nums1.size() + nums2.size();        int median;        if (totalLen % 2)        {            return findKthSortedArrays(&nums1[0], nums1.size(), &nums2[0], nums2.size(), totalLen/2+1);         }        else        {            return (findKthSortedArrays(&nums1[0], nums1.size(), &nums2[0], nums2.size(), totalLen/2) + findKthSortedArrays(&nums1[0], nums1.size(), &nums2[0], nums2.size(), totalLen/2+1)) / 2;        }    }};


0 0
原创粉丝点击