NC22 合并两个有序的数组
给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组
注意:
可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和
# # # @param A int整型一维数组 # @param B int整型一维数组 # @return void # class Solution: def merge(self , A, m, B, n): # write code here A[:] = sorted(A[:m] + B[:n])
或:
- 双指针从A和B的m、n尾部遍历
- 比较A和B的m、n尾部的值,将较大值赋给A整体数组的尾部,指针左移
- 注意特殊情况处理:A的尾指针已遍历结束,B尾指针还未结束。
# # # @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
日行一善, 日写一撰