题解 | #合并两个有序的数组#
合并两个有序的数组
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
# # # @param A int整型一维数组 # @param B int整型一维数组 # @return void # class Solution: def merge(self , A, m, B, n): # write code here # A[m:] = B # A.sort() # 方法2 m-=1 for i in range(n-1,-1,-1): while A[m] > B[i] and m >= 0: A[m+i+1] = A[m] m = m - 1 A[m+i+1] = B[i] #bing # m = m-1 # n = n-1 # while n >= 0: # if m >= 0 and A[m] > B[n]: # A[m + n + 1] = A[m] # m -= 1 # else: # A[m + n + 1] = B[n] # n -= 1
这题很简单,直接合并然后sort(bushi
因为A,B本身就有序,所以可以按顺序判断。
A已经扩容,直接在A里面修改即可。
逆序逐一判断B中的元素,如果原本A数组的末尾更大,就末尾就写入A,并且while判断下一个A,直到找到比B末位更小的A,或者A序列耗尽。那么就把B的末尾写入A。
这样,就按顺序把所有B写进A了。
不过要注意range里面是逗号,不是冒号,别matlab上头了。还要注意下标的问题。python和C++都是从0开始。
#日常刷题#