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

目录

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);
    }
}
相关推荐
2501_91424593几秒前
Java应用性能调优与生产监控部署:2026年实战手册
java·开发语言
吴声子夜歌4 分钟前
MongoDB 4.x——微服务入门
java·mongodb·微服务
好好沉淀17 分钟前
主键选择(自增 vs UUID vs 雪花算法)
java·算法
带刺的坐椅31 分钟前
Solon AI:Tool 与 Talent 怎么选?从函数到领域专家
java·ai·llm·agent·solon
退休倒计时1 小时前
【每日一题】LeetCode 131. 分割回文串 TypeScript
算法·leetcode·typescript
小白说大模型1 小时前
AI Agent 调试实战:链路追踪、Prompt 可视化与异常定位的系统方法
java·人工智能·python·算法·prompt
静水楼台x1 小时前
spring security
java·数据库·spring
重生之我是Java开发战士1 小时前
【Java EE】Spring Boot配置文件
java·spring boot·java-ee
Tim_101 小时前
【C++】019、内存泄漏
java·开发语言
梅梅绵绵冰1 小时前
算法题-矩阵
数据结构·算法·矩阵