1. 程式人生 > >leetcode88. 合併兩個有序陣列

leetcode88. 合併兩個有序陣列

def merge(self, nums1, m, nums2, n):
        """
        關鍵點是nums1原陣列的長度是m+n,肯定要在nums1上操作效率高
        如果正向比較的話移動次數很多,逆向的話不需要移動
        注意m,n是以1開頭的
        """
        while m > 0  and n > 0:
            if nums1[m-1] >= nums2[n-1]:
                '''
                如果nums1的末尾元素大於等於nums2末尾元素,nums1的末尾元素替換0,指標m前進1 m--
                '''
                nums1[m + n - 1] = nums1[m - 1]
                m -= 1
            else:
                '''
                如果nums1的末尾元素小於nums2末尾元素nums2指標指向的元素填補0,指標n--
                '''
                nums1[m + n - 1] = nums2[n-1]
                n -= 1
        if n > 0 :
            nums1[0:n]  = nums2[0:n]
        else:
            return