leetcoad链接:
1.https://leetcode-cn.com/problems/merge-sorted-array/
2.https://leetcode-cn.com/problems/merge-k-sorted-lists/
视频链接:https://www.algomooc.com/555.html
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
方法一:暴力解法
将nums2中数全数放入nums1中为0的元素,然后将nums1进行排序
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
nums1[m:] = nums2
nums2.sort()
方法二:采用双指针的写法
原因:在题目给定的过程中,原先的两个数组就是有序数组
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
i = m- 1 #nums1中最后一个有效元素的指针
j = n -1 #nums2中最后一个元素指针
cur = m +n -1 #nums1数组的最末端
while j >=0: #循环终止的情况
if i >=0 and nums1[i] >=nums2[j]: #这里有一个对i的限定,如果不限定的话会产生数组越界的情况
nums1[cur] = nums[i]
cur -=1
i -=1
else:
nums1[cur] = nums[j]
cur -= 1
j -=1