LeetCode- 合并两个有序数组

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。

示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。

提示:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -109 <= nums1[i], nums2[j] <= 109

图解

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

题解(注释)

// 解题思路:
// 通过定义三个变量r1,r2,r3
// 比较r1和r2谁大(升序)就赋值给如r3

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int r1 = m - 1;       // 第一个数组有效个数最后下标的位置
    int r2 = n - 1;       // 第二个数组有效个数最后下标的位置
    int r3 = (m + n) - 1; // 第一个数组能容下元素最后下标的位置

    while (r1 >= 0 && r2 >= 0) {//r1和r2要大于0才进行循环

        if (nums1[r1] < nums2[r2]) {
            nums1[r3--] = nums2[r2--];
        } else {
            nums1[r3--] = nums1[r1--];
        }

    };
    // 判断r2是否已经走到无效位子,不判断r1是因为r2如果没走完的话排序就会缺少数字
    while (r2 >= 0) {
        nums1[r3--] = nums2[r2--]; // 将剩余数据赋值在r3这个位置
    };

}

相关推荐

  1. LeetCode 88. 合并有序数组

    2024-04-12 12:50:02       37 阅读
  2. leetcode88--合并有序数组

    2024-04-12 12:50:02       25 阅读
  3. LeetCode合并有序数组

    2024-04-12 12:50:02       17 阅读
  4. Leetcode|#88.合并有序数组

    2024-04-12 12:50:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 12:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 12:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 12:50:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 12:50:02       20 阅读

热门阅读

  1. 推荐两个可以直接使用的ChatGPT 开源应用

    2024-04-12 12:50:02       21 阅读
  2. 从零开始的LeetCode刷题日记:454. 四数相加 II

    2024-04-12 12:50:02       16 阅读
  3. Nginx入门 -- 解析Nginx中的基本概念:Keepalive

    2024-04-12 12:50:02       16 阅读
  4. centos安装nginx php mysql redis mongodb 并配置kohana环境

    2024-04-12 12:50:02       16 阅读
  5. 简单高效的GO发票识别+发票查验接口

    2024-04-12 12:50:02       19 阅读
  6. Hadoop技术详解

    2024-04-12 12:50:02       17 阅读
  7. 负载均衡原理及算法

    2024-04-12 12:50:02       21 阅读
  8. 蓝桥杯历年真题值DFS

    2024-04-12 12:50:02       13 阅读