6. 合併排序陣列 II
阿新 • • 發佈:2020-08-09
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: Anew 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