刷题的日常[Leetcode]——4)median of two sorted arrays

来源:互联网 发布:战龙三国弓箭进阶数据 编辑:程序博客网 时间:2024/05/30 02:25

题目描述:

从两个排好序的数组里找到中间值


要注意的问题:

 时间复杂度的要求需要用折半查找

 考虑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=0high1=lengthmid1=(low1+high1)/2if 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-1elif nums1[mid1]<item:low1=mid1+1else:low1=mid1;break mid1=(low1+high1)/2nums1.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


0 0
原创粉丝点击