[注意]把B数组合并到A数组之中
两种思路
- 定义一个新数组,长度为两个数组长度之和,将两个数组都copy到新数组,然后排序。
class Solution:
def merge(self , A, m, B, n):
A[:] = sorted(A[:m] + B)
- 给两个数组分别定义一个下标,最大长度是数组长度减一,按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环,此时较短数组已经全部放入新数组,较长数组还有部分剩余,最后将剩下的部分元素放入新数组,大功告成。
class Solution:
def merge(self, A, m, B, n):
A_copy = A[:m]
A[:] = []
i,j = 0,0
while i<m and j< n:
if A_copy[i]<B[j]:
A.append(A_copy[i])
i += 1
else:
A.append(B[j])
j += 1
# 此时较短的数组已经遍历过一遍。
if i < m:
A[i+j:] = A_copy[i:]
if j < n:
A[i+j:] = B[j:]
# else:
# result = result + A[i:]
# print(i,j,len(list1),list1[i:],list2[j:])
return A
s= Solution()
A=[]
m=0
B=[1]
n=1
print(s.merge(A,m,B,n))
https://leetcode-cn.com/problems/merge-sorted-array/
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=188&&tqId=36520&rp=1&ru=/ta/job-code-high-week&qru=/ta/job-code-high-week/question-ranking