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

目录

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);
    }
}
相关推荐
@淡 定17 分钟前
异常处理最佳实践
java
Dave.B18 分钟前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫19 分钟前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
白宇横流学长21 分钟前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
yaoh.wang25 分钟前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
APIshop32 分钟前
Java爬虫1688详情api接口实战解析
java·开发语言·爬虫
Code Slacker42 分钟前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
brave and determined1 小时前
CANN训练营 学习(day8)昇腾大模型推理调优实战指南
人工智能·算法·机器学习·ai实战·昇腾ai·ai推理·实战记录
Evan芙1 小时前
Tomcat内存机制以及按场景调优
java·tomcat
总爱写点小BUG1 小时前
打印不同的三角形(C语言)
java·c语言·算法