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

合并K个升序链表

ToTOP