4. 寻找两个正序数组的中位数
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
m = len(nums1)
n = len(nums2)
mid = (m+n)/2
pre = -1
cur = -1
i = 0
j = 0
while(i < m and j < n):
if (nums1[i] < nums2[j]):
pre = cur
cur = nums1[i]
i += 1
else:
pre = cur
cur = nums2[j]
j += 1
if (i + j > mid):
break
if (i < m):
while((i+j)<=mid):
pre=cur
cur = nums1[i]
i += 1
if (j < n):
while((i+j)<=mid):
pre=cur
cur = nums2[j]
j += 1
if ((m+n)%2 == 0):
return (pre+cur)/2.0
return cur
思路:
设置两个变量,cur保存当前的值,pre保存当前值的前一个值。遍历两个数组并将对应值进行对比,较小的值赋值给cur,原cur值赋值给pre。当总数达到mid要求时停止遍历。如果两数组长度和为偶数,则返回(pre+cur)/2.0,否则返回cur。
注意点:
错误原因是(pre+cur)/2.0的2.0写成了2导致结果一直报错。