6 合併排序陣列 II

2022-02-14 20:37:14 字數 1901 閱讀 3965

中文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]

樣例解釋: 返回合併後的陣列。

你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小? 

輸入測試資料 (每行乙個引數)如何理解測試資料?

雙指標 + 背向取最大

class

solution:

"""@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

雙指標 + 正向 (每次取最小)

class

solution:

"""@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...