合并两个有序数组文章来源地址https://www.toymoban.com/news/detail-792422.html
方法一:先合并再排序
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.
"""
# 先合并
for i in range(m, m+n):
nums1[i] = nums2[i - m]
# 再排序
nums1.sort()
方法二:从尾部按序插入表
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.
"""
pos_1, pos_2 = m, n
count = 0
while pos_1 > 0 and pos_2 > 0:
# 从nums1的末尾开始填入数字
pos = m + n - count - 1
if nums1[pos_1 - 1] <= nums2[pos_2 - 1]:
# 最大值出现在nums2的指针处,将值填入,并将pos2指针向前偏移
nums1[pos] = nums2[pos_2 - 1]
pos_2 -= 1
else:
# 最大值出现在nums1的指针处,将值填入,并将pos2指针向前偏移
nums1[pos] = nums1[pos_1 - 1]
pos_1 -= 1
# 已填入的个数+1
count += 1
if not pos_1:
# nums2中还有数据没有填入
nums1[:pos_2] = nums2[:pos_2]
文章来源:https://www.toymoban.com/news/detail-792422.html
到了这里,关于1.1 面试经典 150 题-合并两个有序数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!