前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >20T44-合并两个有序数组

20T44-合并两个有序数组

作者头像
木又AI帮
发布2020-05-11 10:30:11
2400
发布2020-05-11 10:30:11
举报
文章被收录于专栏:木又AI帮

leetcode第88题:合并两个有序数组

https://leetcode-cn.com/problems/merge-sorted-array/


【题目】

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

代码语言:javascript
复制
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3
输出: [1,2,2,3,5,6]

【思路】

使用指针i和j从后往前遍历两个数组的元素nums1[i]和nums2[j],将较大的元素(nums1[i]或者nums2[j])放在nums1的最后(i+j+1的位置),较大的元素其指针自减。最后,如果nums2元素没有访问完,则将剩余的nums2的元素复制到nums1的对应位置。

【代码】

python版本

代码语言:javascript
复制
class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: None Do not return anything, modify nums1 in-place instead.
        """
        m -= 1
        n -= 1
        while m >= 0 and n >= 0:
            if nums1[m] > nums2[n]:
                nums1[m + n + 1] = nums1[m]
                m -= 1
            else:
                nums1[m + n + 1] = nums2[n]
                n -= 1
        while n >= 0:
            nums1[m + n + 1] = nums2[n]
            n -= 1

前一篇文章:【leetcode刷题】20T43-删除排序链表中的重复元素

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档