编程思路:两个数组进行比较,小的放入到新的数组中,然后步进,直到其中一个数组遍历结束,另外一个数组的剩余部分则直接赋值到新的数组中。
class Solution:
# @return a float
def findMedianSortedArrays(self, A, B):
# A,B是已经排好序的数组,长度分别是m, n,找中位数,time complexity O(log(m+n))
C = []
m, n = len(A), len(B)
a, b = 0, 0
while a < m and b < n:
if A[a] < B[b]:
C.append(A[a])
a = a + 1
else:
C.append(B[b])
b = b + 1
if a < m:
for i in range(a, m):
C.append(A[a])
a = a + 1
if b < n:
for i in range(b, n):
C.append(B[b])
b = b + 1
# 如果m+n的和是偶数,中位数是中间两个数的平均数,否则是中间数
return (float)(C[len(C)/2] + C[len(C)/2-1])/2 if len(C) % 2 == 0 else C[len(C)/2]