中文english
合併兩個有序公升序的整數陣列a和b變成乙個新的陣列。新陣列也要有序。
樣例 1:
輸入: a=[1], b=[1]
輸出:[1,1]
樣例解釋: 返回合併後的陣列。
樣例 2:
輸入: a=[1,2,3,4], b=[2,4,5,6]
輸出: [1,2,2,3,4,4,5,6]
樣例解釋: 返回合併後的陣列。
你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?
輸入測試資料 (每行乙個引數)如何理解測試資料?
雙指標 + 背向取最大
classsolution:
"""@param a: sorted integer array a
@param b: sorted integer array b
@return: a
newsorted integer array
"""def mergesortedarray(self, a, b):
# write your code here
#雙指標解法,時間複雜度o()陣列小的那個長度
results =
point_a, point_b = len(a) - 1, len(b) - 1
#迴圈指標
while point_a >= 0 and point_b >= 0
: #判斷大小
if (a[point_a] >b[point_b]):
results.insert(
0, a[point_a])
point_a -= 1
else
: results.insert(
0, b[point_b])
point_b -= 1
#最後直接加進來,看哪個沒有走完
if (point_a != -1
): #注意,指標指向問題,poion_a + 1
,最後乙個poion_a是沒有走完的,所以需要加進來
results = a[: point_a + 1] +results
else
: results = b[: point_b + 1] +results
return results
雙指標 + 正向 (每次取最小)
classsolution:
"""@param a: sorted integer array a
@param b: sorted integer array b
@return: a
newsorted integer array
"""def mergesortedarray(self, a, b):
# write your code here
#雙指標寫法,每次取最小
results =
point_a, point_b = 0, 0
m, n =len(a), len(b)
while point_a < m and point_b if (a[point_a] point_a += 1
else
: point_b += 1
#最終判斷
if (point_a !=m):
results.extend(a[point_a: ])
else
: results.extend(b[point_b: ])
return
results
6 合併排序陣列
題目要求 合併兩個排序的整數陣列甲和乙變成乙個新的陣列。樣例給出 a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 挑戰 你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?實現 使用向量,和其中的的push back函式 class solution publi...
6 合併排序陣列
合併兩個排序的整數陣列a和b變成乙個新的陣列。樣例 給出a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 先上乙個無腦的,可以ac 1 vector mergesortedarray vector a,vector b 6sort a.begin a.end 7retur...
合併排序陣列
合併兩個排序的整數陣列a和b變成乙個新的陣列。樣例給出a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 挑戰 你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?class solution param a and b sorted integer array a...