题目描述:
从两个排好序的数组里找到中间值
要注意的问题:
① 时间复杂度的要求需要用折半查找
② 考虑nums1或nums2为空的情况
考虑nums2中数值比nums1第一个小或者最后一个大的情况
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
if len(nums1)==0:
l2=len(nums2)
if l2%2==0:
return float(nums2[l2/2-1]+nums2[l2/2])/float(2)
else:
return float(nums2[l2/2])
elif len(nums2)==0:
l1=len(nums1)
if l1%2==0:
return float(nums1[l1/2-1]+nums1[l1/2])/float(2)
else:
return float(nums1[l1/2])
else:
for item in nums2:
length=len(nums1)
low1=0
high1=length
mid1=(low1+high1)/2
if item<nums1[0]:
nums1.insert(0,item)
elif item>nums1[length-1]:
nums1.append(item)
else:
while low1<=high1:
if nums1[mid1]>item:
high1=mid1-1
elif nums1[mid1]<item:
low1=mid1+1
else:
low1=mid1;
break
mid1=(low1+high1)/2
nums1.insert(low1,item)
l1=length=len(nums1)
if l1%2==0:
return float(nums1[l1/2-1]+nums1[l1/2])/float(2)
else:
return float(nums1[l1/2])
if __name__=="__main__":
solution=Solution()
nums1=[1,2]
nums2=[3,4]
r=solution.findMedianSortedArrays(nums1,nums2)
print r