Bootstrap

刷题

如何实现一个变长数组?

  • 支持索引与随机访问

  • 分配多长的连续空间

  • 空间不够用了怎么办

  • 空间剩余很多如何回收

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        i = m -1
        j = n -1
        for k in range(m+n-1, -1, -1):
            if j < 0 or ( i >= 0 and nums1[i] >= nums2[j]):
                nums1[k] = nums1[i]
                i = i -1
            else:
                nums1[k] = nums2[j]
                j = j -1

思路,利用列表的扩容原理,从右侧开始遍历,然后比较两个列表的元素大小,并进行相应的替换。需要注意的是不要有越界的情况发生。