LeetCode--合并两个有序数组(python版)

class Solution(object):
    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.
        """
        k=0
        i=m-1
        j=n-1
        while(j>=0):
            if i<0:
                nums1[0:j+1]=nums2[0:j+1]
                break
            if nums1[i]

刚开始的想法是从头遍历两个数组如果数组2有较大值就插入值数组1中,但是这样数组1中的后续元素都要后移一位,数组中移动元素成本太高,时间复杂度肯定大,就打消了这个念头,但是也想不到其他的好方法。后来只能求助万能的互联网,看到别人的解法豁然开朗,重点就是从后遍历两个数组,这样就不需要移动数组元素,只需要替换就可以。时间复杂度应该是O(n),因为没有使用额外的空间,所以空间复杂度应该是O(1)。
重点:

  1. 使用while需要明确终止条件
  2. 梳理边界情况,进行划分

你可能感兴趣的:(LeetCode--合并两个有序数组(python版))