您的位置:首页 > 其它

LeetCode——Median of Two Sorted Arrays

2015-09-19 10:09 274 查看

题目

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

思路

这个不会,我就只想到了先把两个排成一个的,然后再选中位数。但这显然是最蠢的方法了。再想其他的方法的时候,自己想偏了,想通过两个列表的中位数锁定范围然后再找,但是依然不是很好实现。最后只能求助网上各大神的方法。

我参考的该文:Leetcode 4 Median of Two Sorted Arrays

大家也可以去看一下。

解法

非常讨厌C,所以我用其他语言写了代码

class Solution(object):
def findKth(self,a,b,k):
if len(a)>len(b):
return self.findKth(b,a,k)
if len(a)==0:
return b[k -1]
if k==1:
return min(a[0],b[0])

pa = min(k/2,len(a))
pb = k - pa
if a[pa-1]<b[pb-1]:
return self.findKth(a[pa:],b,k-pa)
elif a[pa-1]>b[pb-1]:
return self.findKth(a,b[pb:],k-pb)
else:
return a[pa-1]

def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
total = len(nums1)+len(nums2)
if total&0x1:
return self.findKth(nums1,nums2,total/2+1)
else:
return (self.findKth(nums1,nums2,total/2)
+self.findKth(nums1,nums2,total/2+1))/2.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: