码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode "Median of Two Sorted Arrays"

时间:2014-08-21 13:13:24      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   div   amp   log   

1A! We get median of each array and compare them, then we know which half should be disguarded and how many should be disguarded.

class Solution {
public:
    double findMidArr(int A[], int s, int e, int &chopLen)
    {
        int len = e - s + 1;
        chopLen = (s + e) / 2 - s;
        if (len % 2)    return A[(s + e) / 2];
        else            return (A[(s + e) / 2] + A[(s + e) / 2 + 1]) / 2.0;
    }
    double findMidMinor(int sm[], int cntSm, int lg[], int cntLg)
    {
        vector<int> v;
        v.assign(lg, lg + cntLg);
        
        v.insert(v.end(), sm, sm + cntSm);
        std::sort(v.begin(), v.end());

        size_t len = v.size();
        if (len % 2)    return v[len / 2];
        else            return (v[len / 2] + v[len / 2 - 1]) / 2.0;
    }
    double findMid(int A[], int sa, int ea, int B[], int sb, int eb)
    {
        int lenA = ea - sa + 1;
        int lenB = eb - sb + 1;

        //    Base cases
        if (lenA <= 2)    return findMidMinor(A + sa, lenA, B + sb, lenB);
        if (lenB <= 2)    return findMidMinor(B + sb, lenB, A + sa, lenA);

        //    Chop
        int chopLenA, chopLenB;
        double midA = findMidArr(A, sa, ea, chopLenA);
        double midB = findMidArr(B, sb, eb, chopLenB);
        int chopLen = std::min(chopLenA, chopLenB);

        if (midA == midB) return midA;
        else if (midA < midB)    return findMid(A, sa + chopLen, ea, B, sb, eb - chopLen);
        else if (midB < midA)    return findMid(A, sa, ea - chopLen, B, sb + chopLen, eb);
    }
    double findMedianSortedArrays(int A[], int m, int B[], int n) {
        return findMid(A, 0, m - 1, B, 0, n - 1);
    }
};

LeetCode "Median of Two Sorted Arrays",布布扣,bubuko.com

LeetCode "Median of Two Sorted Arrays"

标签:style   blog   color   io   ar   div   amp   log   

原文地址:http://www.cnblogs.com/tonix/p/3926873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!