题目描述:两个有序数组A和B,长度分别为m,n。将两个数组合并到A中
题解:将B和并到A中,如果从前往后依次合并,则每一次在数组A中插入一个值,都需要后边节点依次往后移,改操作浪费空间
可以从数组A的m位置和B的n位置开始比较,从m+n-1的位置开始放最大值,依次往前排
代码:
#
#
# @param A int整型一维数组
# @param B int整型一维数组
# @return void
#
class Solution:
def merge(self , A, m, B, n):
# write code here
if not A and not B:
return []
elif not A:
return B
elif not B:
return A
while m>0 and n>0:
if A[m-1]>=B[n-1]:
A[m+n-1]=A[m-1]
m-=1
else:
A[m+n-1] = B[n-1]
n-=1
if n>0:
A[:n]=B[:n]
return A