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

目录

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);
    }
}
相关推荐
会游泳的石头6 小时前
一行注解防死循环:MyBatis 递归深度限制(无需 level 字段)
java·mybatis
实心儿儿6 小时前
Linux —— 基础开发工具5
linux·运维·算法
q***o3766 小时前
Spring Boot环境配置
java·spring boot·后端
oMcLin6 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
TaiKuLaHa6 小时前
Spring Bean的生命周期
java·后端·spring
charlie1145141917 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
刀法如飞7 小时前
开箱即用的 DDD(领域驱动设计)工程脚手架,基于 Spring Boot 4.0.1 和 Java 21
java·spring boot·mysql·spring·设计模式·intellij-idea
我是苏苏7 小时前
Web开发:C#通过ProcessStartInfo动态调用执行Python脚本
java·服务器·前端
JavaGuide7 小时前
SpringBoot 官宣停止维护 3.2.x~3.4.x!
java·后端