第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

LeetCode 合并兩個有序數(shù)組

標(biāo)簽:
Python

合并两个有序数组


题目


给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。

你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]

解题思路


  1. 采用双指针的方法,从后面往前遍历
  2. 定义 p1 指针指向 num1 数字末尾,p2 指向 num2 数字末尾,p 指向 num1 的最末尾;
  3. 从后往前循环遍历比较两个数组之间元素的大小;
  4. p < 0 时,也就是 p1p2 其中一个小于 0,遍历结束;
  5. 若是 num2 数组有剩余部分,因为数组都是有序的,直接将 num2 数组剩余部分放到 num1 数组对应的位置。

代码实现


class Solution:
    def merge(self, nums1, m: int, nums2, n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        
        合并两个有序数组为一个有序数组

        Args:
            num1: 有序数组 1
            m: num1 的元素数量
            num2: 有序数组 2
            n:num2 的元素数量
        
        Returns:
            返回合并后的有序数组
        """
        # 通过双指针的方法,从后向前遍历的方法、
        # 定义指针 p1 指向 num1 的数字末尾
        # 定义指针 p2 指向 num2 的数字末尾
        # 定义指针 p 指向 num1 的最末尾
        p1 = m - 1
        p2 = n - 1
        p = m + n - 1
        # 当 p 小于 0,即是 p1 和 p2 其中一个小于 0,遍历结束
        while p1 >= 0 and p2 >= 0:
            if nums1[p1] < nums2[p2]:
                nums1[p] = nums2[p2]
                p2 -= 1
            else:
                nums1[p] = nums1[p1]
                p1 -= 1
            p -= 1
        # 两个数组都是有序的
        # 若是 p1 先小于 0,将 num2 剩余部分放在 num1 数组前面
        nums1[:p2 + 1] = nums2[:p2 + 1]

实现效果


merge_result.jpg


以上就是本篇的主要内容

點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消