1. 程式人生 > 實用技巧 >6. 合併排序陣列 II

6. 合併排序陣列 II

6.合併排序陣列 II

中文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 
new sorted 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