- 合并两个有序数组
思路一:合并之后再排序,时间O((m+n)log(m+n))
思路二:双指针
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.
"""
p1 = m - 1
p2 = n - 1
p3 = m + n - 1
while p1 >= 0 and p2 >= 0:
if nums1[p1] < nums2[p2]:
nums1[p3] = nums2[p2]
p2 -= 1
else:
nums1[p3] = nums1[p1]
p1 -= 1
p3 -= 1
nums1[0:(p2+1)] = nums2[0:(p2+1)]
return nums1
# 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.
# """
# nums1[:] = sorted(nums1[:m] + nums2)