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

posted @ 2021-09-13 13:02  公众号python学习开发  阅读(135)  评论(0编辑  收藏  举报