题解 | #合并两个有序的数组#
合并两个有序的数组
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 i = m-1 j = n-1 k = m+n-1 while i >= 0 and j >= 0: if A[i]>B[j]: A[k]=A[i] i = i-1 k = k-1 else: A[k]=B[j] j = j-1 k = k-1 if i<0: while j>=0: A[k] = B[j] k = k - 1 j = j - 1
先看题,感觉没有思路,就看了解题,第一个加入一个新的数组的,只要C++,没有python,但是平时不写while的,感觉有些难受
然后就看了另外一个更简洁的思路,然后进行尝试
主要就是,由于A数组已经扩充过了,所以可以直接后面填充,然后双指针主要就是定位用途的,所以从A和B的末端开始定位,判断大小,大的放在结果的最后,小的放在前面,一点一点的遍历
最后还需要考虑一下,A遍历完了但是B还有的情况,就直接把B剩下的加进去就好了