关闭

LeetCode#4 Median of Two Sorted Arrays (2)

219人阅读 评论(0) 收藏 举报
分类:
def findKth(self,a,b,k,aStart,aEnd,bStart,bEnd):
        aLen = aEnd - aStart + 1
        bLen = bEnd - bStart + 1
        
        if aLen == 0:
            return b[bStart+k]
        
        if bLen == 0:
            return a[aStart+k]
            
        if k == 0:
            if a[aStart] > b[bStart]:
                return b[bStart]
            else:
                return a[aStart]
                
        aMid = k*aLen/(aLen + bLen)
        bMid = k - aMid - 1
        
        aMid+=aStart
        bMid+=bStart
        
        if a[aMid] > b[bMid]:
            k-=(bMid - bStart + 1)
            aEnd = aMid
            bStart = bMid + 1
        else:
            k-= (aMid - aStart + 1)
            bEnd = bMid
            aStart = aMid + 1
        
        return self.findKth(a,b,k,aStart,aEnd,bStart,bEnd)
    
    
    def findMedianSortedArrays(self, nums1, nums2):
        lenN1 = len(nums1)
        lenN2 = len(nums2)
        
        if (len(nums1) + len(nums2)) % 2 == 0:
            return (self.findKth(nums1,nums2,(len(nums1)+len(nums2))/2,0,len(nums1)-1,0,len(nums2)-1) + self.findKth(nums1,nums2,(len(nums1)+len(nums2))/2 - 1,0,len(nums1)-1,0,len(nums2)-1) ) / 2.0
        else:
            return self.findKth(nums1,nums2,(len(nums1)+len(nums2))/2,0,len(nums1)-1,0,len(nums2)-1)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6360次
    • 积分:299
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:15篇
    • 译文:0篇
    • 评论:0条
    文章分类