题目:数组A、B分别已经按照升序进行排列,元素个数分别为N1和N2。求这两个数组的中间值。
定义:当两个数组的元素个数之和为奇数时,中间数为两个数组归并排序后,排在中间的那个数;当两个数组的元素个数之和为偶数时,中间数为两个数组归并排序后,中间的两个数的平均值。
解决的思路:
将两个数组分别拆成两半,使得两个数组左半边的元素个数之和等于右半边的元素个数之和。
下面给出3种解法:
解法1:
import sys
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
N1 = len(nums1)
N2 = len(nums2)
if N1 < N2:
return self.findMedianSortedArrays(nums2, nums1)
if N1 == 0:
return 0
elif N2 == 0:
return (nums1[(N1-1)/2] + nums1[N1/2]) / 2.0
flag = (N1 + N2) % 2 == 0
Half = (N1 + N2) / 2 if flag else (N1 + N2) / 2 + 1
lo = 0
hi = N1 - 1
while lo <= hi:
mid = (hi