原题
https://leetcode.cn/problems/merge-sorted-array/description/
思路
创建数组nums3, 储存结果, 然后将nums3复制给nums1
复杂度
时间:O(m+n)
空间:O(m+n)
Python代码
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.
"""
nums3 = [0] * (m + n)
i, j, k = 0, 0, 0
while i < m or j < n:
if i < m and j < n:
if nums1[i] <= nums2[j]:
nums3[k] = nums1[i]
i+= 1
else:
nums3[k] = nums2[j]
j += 1
elif i < m:
nums3[k] = nums1[i]
i+= 1
elif j < n:
nums3[k] = nums2[j]
j += 1
k += 1
nums1[:] = nums3
Go代码
func merge(nums1 []int, m int, nums2 []int, n int) {
nums3 := make([]int, m+n)
i, j, k := 0, 0, 0
for i < m || j < n {
if i < m && j < n {
if nums1[i] <= nums2[j] {
nums3[k] = nums1[i]
i += 1
} else {
nums3[k] = nums2[j]
j += 1
}
} else if i < m {
nums3[k] = nums1[i]
i += 1
} else if j < n {
nums3[k] = nums2[j]
j += 1
}
k += 1
}
copy(nums1, nums3)
}

被折叠的 条评论
为什么被折叠?



