1. 程式人生 > 其它 >python合併兩個有序陣列

python合併兩個有序陣列

class Solution():
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        index = m + n - 1  # 合併之後的nums1最大的下標
        # 個數減去1得到下標
        m -= 1
        n -= 1
        while m >= 0 and n >= 0:
            # 如果nums1倒數最大 大於nums2倒數最大
            # 第一輪nums1的5和nums2的6
            # 第二輪nums1的5和nums2的4比較
            if nums1[m] > nums2[n]:
                # nums1的5放到
                nums1[index] = nums1[m]
                #比nums1較下一個
                m -= 1
            else:
                # 第一輪的nums2的6放到nums1的最後
                nums1[index] = nums2[n]
                # 比較nums2的下一個
                n -= 1
            # 最大索引減一放剩下數組裡的大數
            index -= 1
        if m < 0:
            #說明nums1的數都大於nums2
            nums1[:n + 1] = nums2[:n + 1]


if __name__ == '__main__':
    nums1 = [1, 3, 4, 5, 0, 0, 0]
    nums2 = [2, 4, 6]
    s = Solution()
    s.merge(nums1, 4, nums2, 3)
    print nums1