当前位置: 首页 > news >正文

java练习(24)

PS:练习来自力扣

合并两个有序数组

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

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

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

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        // 定义三个指针,分别指向 nums1 有效元素末尾、nums2 末尾以及合并后数组的末尾
        int p1 = m - 1;
        int p2 = n - 1;
        int p = m + n - 1;

        // 从后往前遍历,比较 nums1 和 nums2 的元素,将较大值放入 nums1 的末尾
        while (p1 >= 0 && p2 >= 0) {
            if (nums1[p1] > nums2[p2]) {
                nums1[p] = nums1[p1];
                p1--;
            } else {
                nums1[p] = nums2[p2];
                p2--;
            }
            p--;
        }

        // 如果 nums2 还有剩余元素,将其依次放入 nums1 前面剩余的位置
        while (p2 >= 0) {
            nums1[p] = nums2[p2];
            p2--;
            p--;
        }
    }
}

http://www.dtcms.com/a/21372.html

相关文章:

  • 《解锁自然语言处理:让公众正确拥抱AI语言魔法》
  • LabVIEW中的icon.llb 库
  • 【华为OD机考】2024E+D卷真题【完全原创题解 详细考点分类 不断更新题目 六种主流语言Py+Java+Cpp+C+Js+Go】
  • Transformer(3): Add Norm
  • React VS Vue
  • 【R语言】方差分析
  • 什么是大模型以及如何部署大模型
  • 基于大数据的网购球鞋分析系统的设计与实现
  • CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?
  • 【已解决】TypeError: AsyncConnectionPool.__init__(), new install bug, httpx==0.24.1
  • TLS和SSL的区别
  • GRN前沿:scGeneRAI:基于可解释AI的单细胞基因调控网络预测
  • C进阶 数据的存储
  • Docker高级篇
  • 无限使用,自动解锁全部版!
  • 基于角色访问控制的UML 表示04
  • 多模态对齐损失设计全解析:CLIP模型实现图文语义空间统一的原理详解与实战指南
  • 基于CANopen协议的同步控制和PDO消息传输
  • 考研操作系统----IO
  • 【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧
  • C++拷贝构造函数初级解析:设计要点、调用机制与性能优化实践
  • 【NLP】文本预处理
  • ArrayList
  • 【第13章:自监督学习与少样本学习—13.3 自监督学习与少样本学习在图像识别、语言理解等领域的应用探索】
  • 网络安全学习笔记之Internet基本知识
  • 服务器A到服务器B免密登录
  • 哈希动态规划dp_5
  • 《探秘Windows 11驱动开发:从入门到实战》
  • FreeRTOS第1篇:FreeRTOS的“内核心脏”——任务管理机制
  • 2025 N1CTF crypto 复现