[注意]把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