zoukankan      html  css  js  c++  java
  • LeetCode "Median of Two Sorted Arrays"

    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);
        }
    };
  • 相关阅读:
    android有进度条的下载图片并且显示图片
    在Java中,直接将类的对象使用system.out.println输出
    改写toString
    Android中Uri的使用
    重写toString()
    权限管理
    实训
    第一次上传文件成功
    sql server 2005 JDBC连接遇到的问题
    JSP 权限控制
  • 原文地址:https://www.cnblogs.com/tonix/p/3926873.html
Copyright © 2011-2022 走看看