题目链接:https://leetcode-cn.com/problems/merge-sorted-array/
难度:简单
描述:
给你两个按非递减顺序排列的整数数组nums1
和nums2
,另有两个整数m
和n
,分别表示nums1
和nums2
中的元素数目。
请你合并nums2
到nums1
中,使合并后的数组同样按非递减顺序排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组nums1
中。为了应对这种情况,nums1
的初始长度为m + n
,其中前m
个元素表示应合并的元素,后n
个元素为0
,应忽略。nums2
的长度为n
。
提示:
m
,n
范围:[0, 200]
m + n
范围:[1, 200]
题解
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
i, j, k = m - 1, n - 1, m + n - 1
while i >= 0 and j >= 0:
if nums1[i] > nums2[j]:
nums1[k] = nums1[i]
i -= 1
else:
nums1[k] = nums2[j]
j -= 1
k -= 1
# 若 j < 0而i >= 0说明nums1前面已经有序,不用填充
while j >= 0:
nums1[k] = nums2[j]
j -= 1
k -= 1