LeetCode -- Median of Two Sorted Arrays

来源:互联网 发布:php json 中括号 编辑:程序博客网 时间:2024/06/07 02:03

求解两个有序数组的的中值,下面的方法的确巧妙:

class Solution {    int findKmin(int k, int A[], int m, int B[], int n){        if(m == 0) return B[k -1];        if(n == 0) return A[k -1];        if(k == 1) return min(A[0], B[0]);        if(m > n)  return findKmin(k, B, n, A, m);        int p = min(m, k/2), q = k - p;        if(A[p - 1] <= B[q - 1]) {            return findKmin(k - p, A + p, m - p, B, n);        } else {            return findKmin(k - q, A, m, B + q, n - q);        }    }public:    double findMedianSortedArrays(int A[], int m, int B[], int n) {        int k = m + n;        if(k & 1) {            return findKmin(k/2 + 1, A, m, B, n);        } else {            return (findKmin(k/2 , A, m, B, n) + findKmin(k/2 + 1, A, m, B, n))/2.0;        }    }};


0 0
原创粉丝点击