[Leetcode] Median of Two Sorted Arrays

Problem:

There are two sorted arrays A and B 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)).

My code:

public class Solution {
    public double findMedianSortedArrays(int A[], int B[]) {

        int m=A.length;
        int n=B.length;
        if((m+n)/2*2!=(m+n)) return helper(A, 0, m-1, B, 0, n-1, (m+n)/2+1);
        else 
        return (helper(A, 0, m-1, B, 0, n-1, (m+n)/2)+helper(A, 0, m-1, B, 0, n-1, (m+n)/2+1))/2;
    }

    double helper(int A[], int AL, int AH, int B[], int BL, int BH, int k){
      
        if(AH-AL>BH-BL){
            return helper(B, BL, BH, A, AL, AH, k);
        }
        
        if(AL>AH) return B[k-1];
        
        if(k==1) return Math.min(A[AL],B[BL]);
        
        int m=AH-AL+1;
        int n=BH-BL+1;
        int a = Math.min(k/2, m);
        int b = k- a;
        
        if(A[AL+a-1]==B[BL+b-1]) return A[AL+a-1];
        if(A[AL+a-1]<B[BL+b-1]) return helper(A, AL+a, AH, B, BL, BL+b-1, k-a);
        else return helper(A, AL, AL+a-1, B, BL+b, BH, k-b);
        
    }

}
idea: 
把问题1:"寻找新的两个序列的第k个"  转化为问题2:"寻找新的两个序列的第k'个"。
为方便recursion,问题2中新的两个子序列设计为问题1的两个序列的子序列。为加快叠代,新k'设置为k/2 

Array技巧:只记忆index, 不记忆子序列.  

k表示ordering:"第几个",而不是index.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值