合并两个有序数组

要求原地合并,我的做法比较复杂,双指针,比较i和j位置的值,若i位置值大于j位置值,则互换,并对j位置值排序,代码为:

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.
        """
        if not nums2:
            return
        
        i = 0
        j = 0
        
        while i < m and nums1:
            if nums1[i] <= nums2[j]:
                i += 1
            else:
                temp = nums1[i]
                nums1[i] = nums2[j]
                nums2[j] = temp
                i += 1
                
                temp = j
                if n == 1:
                    continue
                while(nums2[temp]>nums2[temp+1]):
                    temp_num = nums2[temp]
                    nums2[temp] = nums2[temp + 1]
                    nums2[temp+1] = temp_num
                    temp += 1
                    if temp >= n - 1:
                        break
        while(j < n):
            nums1[i] = nums2[j]
            i += 1
            j += 1

大佬的解法比较好,从后往前,先比较两者后端,大的放nums1最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值