数组算法之【合并两个有序数组】

目录

LeetCode-88题


LeetCode-88题

给定两个非递减排序的数组num1和num2,并给出两者的元素个数分别为m和n,合并两个数组,使合并后仍然按非递减排序

java 复制代码
public class Solution {
    /**
     * 这里使用的是双指针的解法
     */
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        // check
        if (n <= 0 && m <= 0)
            return;
        if (m <= 0) {
            System.arraycopy(nums2, 0, nums1, 0, n);
            return;
        }
        if (n <= 0)
            return;

        int[] newArr = new int[m + n];
        // 定义两个指针
        int p1 = 0;
        int p2 = 0;
        int i = 0;

        // 将指针指向小的元素放入结果集数组中,并移动对应指针
        while (p1 < m && p2 < n)
            newArr[i++] = nums1[p1] < nums2[p2] ? nums1[p1++] : nums2[p2++];

        // 将剩余元素放入结果集数组
        while (p1 < m)
            newArr[i++] = nums1[p1++];
        while (p2 < n)
            newArr[i++] = nums2[p2++];

        // 应题目要求放入num1中
        System.arraycopy(newArr, 0, nums1, 0, newArr.length);
    }
}
相关推荐
点云SLAM6 分钟前
OpenCV中特征匹配算法GMS(Grid-based Motion Statistics)原理介绍和使用代码示例
人工智能·opencv·算法·计算机视觉·图像配准·gms特征匹配算法·特征匹配算法
凌辰揽月15 分钟前
贴吧项目总结二
java·前端·css·css3·web
黄名富21 分钟前
Redisson 分布式锁
java·redis·分布式·缓存
秋说21 分钟前
【PTA数据结构 | C语言版】哥尼斯堡的“七桥问题”
c语言·数据结构·算法
屁股割了还要学28 分钟前
【C语言进阶】结构体练习:通讯录
c语言·开发语言·学习·算法·青少年编程
转转技术团队37 分钟前
游戏账号大图生成
java·后端
青云交1 小时前
Java 大视界 -- Java 大数据机器学习模型在金融市场波动预测与资产配置动态调整中的应用(355)
java·大数据·机器学习·lstm·金融市场·波动预测·资产配置
码出极致1 小时前
快排必背模板(Java)| 分治 + 双指针 + 3 步口诀
算法
徐子童1 小时前
初识Redis---Redis的特性介绍
java·数据库·redis
码出极致1 小时前
三线程交替打印必背模板(Java)| Lock+Condition+4步口诀
算法