当前位置: 首页 > 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--;
        }
    }
}

相关文章:

  • 《解锁自然语言处理:让公众正确拥抱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伪类选择器深度解析:分类、应用与技巧
  • 美联储宣布维持基准利率不变
  • 外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的
  • 应对美政策调整:中国重在开放与创新,维护好数据主权
  • 涉个人信息收集使用问题,15款App和16款SDK被通报
  • 长沙天心阁举办古琴音乐会:文旅向深,让游客听见城市的底蕴
  • 《蓦然回首》:现代动画的践行与寓言