zoukankan      html  css  js  c++  java
  • [leetcode]Median of Two Sorted Arrays

    问题就是找两个排序数组里面第k大的数

    我们在A,B前k/2里面,比较A[k/2] , B[k/2]

    哪个小说明第k个肯定不在里面,可以抛弃,然后继续递归处理

    class Solution {
    public:
    
        /**
        * choice k/2 from a, and k/2 from b
        * compare the last
        * if b[k/2] > a[k/2], drop a[k/2], kth must not in a[k/2]
        * otherwise the same
        */
        double findMedianSortedArrays(int A[], int m, int B[], int n) {
            int total = m + n;
            if(total % 2 == 0) {
                return (double)(kth(A,m,B,n,total/2) + kth(A,m,B,n,total/2+1))/2;
            }else {
                return (double)kth(A,m,B,n,total/2+1);
            }
        }
    private:
        int kth(int A[] , int m , int B[] , int n , int k) {
            if(n < m) return kth(B , n , A , m ,k);
            if(m == 0) return B[k-1]; 
            if(k == 1) return min(A[0] , B[0]);
            
            // am bn
            int pa = min(k/2 , m);
            int pb = k - pa;
            
            if(A[pa-1] < B[pb-1])
                return kth(A+pa , m - pa , B , n , k-pa);
            else if(A[pa-1] > B[pb-1])
                return kth(A , m , B+pb , n-pb , k-pb);
            else 
                return A[pa-1];
        }
    };
  • 相关阅读:
    (转)django上传文件
    django中的认证与登录
    django中的转义
    django中的request对象详解
    dotnetspider
    区块链试验
    管理员权限
    axure跨inframe传递参数
    python selenium chrome 测试
    python chrome selenium
  • 原文地址:https://www.cnblogs.com/x1957/p/3530494.html
Copyright © 2011-2022 走看看