原题描述:
合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
挑战
你能否优化你的算法,如果其中一个数组很大而另一个数组很小?
题目分析:
合并两个排序的整数数组A和B变成一个新的数组。
源码:
class Solution:
#@param A and B: sorted integer array A and B.
#@return: A new sorted integer array
def mergeSortedArray(self, A, B):
# write your code here
if A is None: return B
if B is None: return A
if len(A) > len(B):
big,sma = A,B
else:
big,sma = B,A
i = 0
while len(sma) > 0:
n1 = sma[0]
j = len(big)
# i==j时,sma[0]元素已经比big[i-1]元素大,即big组最后一个元素
# 执行insert会报索引超限,所以替换为使用append直到sma最后一个元素
if i == j:
big.append(n1)
sma.remove(sma[0])
elif n1 <= big[i]: # sma[0]小于等于Big[i],在i位置插入,原Big[i]变为Big[i+1]
big.insert(i,n1)
sma.remove(sma[0])
else: # sma[0]大于Big[i],继续查找Big下一个元素
i += 1
return big