https://leetcode.com/problems/merge-sorted-array/
一个从前还是从后计算的问题,对于inplace的问题,有时候需要考虑,这个就是一个简单的示范。

个人解答

  1. class Solution:
  2. def merge(self, n1: List[int], m: int, n2: List[int], n: int) -> None:
  3. """
  4. Do not return anything, modify nums1 in-place instead.
  5. """
  6. i, j = m - 1, n - 1
  7. k = m + n - 1
  8. while k >= 0:
  9. # print(i, j, k)
  10. if j < 0:
  11. n1[k] = n1[i]
  12. i -= 1
  13. elif i < 0:
  14. n1[k] = n2[j]
  15. j -= 1
  16. else:
  17. if n1[i] >= n2[j]:
  18. n1[k] = n1[i]
  19. i -= 1
  20. else:
  21. n1[k] = n2[j]
  22. j -= 1
  23. k -= 1

题目分析

没有什么好分析的,两点:

  1. in-place,考虑从后向前来更改数组
  2. 注意边界条件