leetcode:88. 合并两个有序数组

原题地址:https://leetcode.cn/problems/merge-sorted-array/description/

题目描述

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

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

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

示例:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

思路

逆向双指针

在这里插入图片描述
图片来自网络

代码实现

package com.demo;

import java.util.Arrays;

public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int p1 = m - 1;
        int p2 = n - 1;
        int p = m + n - 1;

        while (p >= 0) {
            if (p1 >= 0 && p2 >= 0) {
                if (nums1[p1] >= nums2[p2]) {
                    nums1[p] = nums1[p1];
                    p1--;
                } else {
                    nums1[p] = nums2[p2];
                    p2--;
                }
            } else if (p2 >= 0) {
                nums1[p] = nums2[p2];
                p2--;
            }

            p--;
        }
    }

    public static void main(String[] args) {
        int[] nums1 = {1,2,3,0,0,0};
        int m = 3;
        int[] nums2 = {2,5,6};
        int n = 3;
        new Solution().merge(nums1, m, nums2, n);
        System.out.println(Arrays.toString(nums1));
    }
}

参考

  • 【美团面试题】合并两个有序数组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/432833.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode安装

前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对…

网络原理初识(1)

目录 一、网络发展史 1、独立模式 2、网络互联 3、局域网LAN 局域网组建的方式 1、基于网线直连 2、基于集线器组建 3、基于交换机组建 4、基于交换机和路由器组建 4、广域网WAN 二、网络通信基础 1、IP地址 2、端口号 3、认识协议 4、五元组 一、网络发展史 1、独立模式 …

rabbitmq3

指定通过通道将消息发送给哪个消息队列 同一个通道可以向不同的队列发送消息的,如果你绑定的队列和发布消息的队列不一致也是可以的,这个才是真正的发布消息去具体的某一个队列: 如果队列没有持久化,就不会把这个消息队列保存在磁…

对象得定义与使用(动力节点老杜)

对象思想 1.什么是面向过程,什么是面向对象? 换而言之,面向对象思想实际就是将整体分成一个个独立的单元,每个单元都有自己得任务和属性,所有单元结合在一起完成一个整体。如果某个单元出现了问题还可以及时处理&…

微软研究深度报告:Sora文转视频AI模型全景剖析及未来展望

论文由微软研究团队撰写,这篇论文深入探讨了Sora的发展背景、核心技术、新兴应用场景、现有的局限性以及未来的发展机会,基于公开资料和团队自行进行的逆向工程分析。文中详尽且逻辑清晰,建议细读全文以获得深入了解。 原文:Sora…

nginx生成自签名SSL证书

备注:nginx自生成的ssl证书在浏览器访问时会提示此证书不受信用 1.安装nginx nginx必须有"--with-http_ssl_module"模块 查看nginx安装的模块: [rootmaster1 key]# nginx -V nginx version: nginx/1.24.0 built by gcc 4.8.5 20150623 (Red …

Python图像处理之光斑分析

文章目录 质心目标截取光斑半径 python图像处理教程:初步📷插值变换📷形态学处理📷滤波 光斑是工程中经常出现的图像数据,其特点是目标明确,分布清晰。对光斑图像的分析,主要包括质心定位、目标…

【Android】反编译与预防被反编译

近期在开发一款软件时,遇上了加密、解密数据方面的一些技术问题无法攻克,于是抱着试试看的态度使用 jadx-gui 工具进行反编译一下。哎,居然还成功了,更骚的是,这一款App没有对应用进行混淆、加密、加固,没多…

【学习笔记】卫星基础知识

一、什么是卫星以及它如何工作? 通信卫星是一种人造卫星,通过使用转发器在源和接收器之间中继和放大无线电电信信号。卫星的工作原理是接收从地球发送的无线电信号并将无线电信号重新发送回地球。卫星使用从大型太阳能电池阵列收集的太阳能,…

2.Rust变量

变量的声明 let关键字 在Rust中变量必须要先声明才能使用,let关键字用于声明变量并将一个值绑定到该变量上。如下: fn main() {let var_name:i32 123123;println!("{}",var_name) //println! 是一个宏(macros),可以…

Java 简单模拟银行存取钱

模拟银行存取钱 一、实验任务 在银行办理业务时,通常银行会开多个窗口,客户排队等候,窗口办理完业务,会呼叫下一个用户办理业务。本实验要求编写一个程序模拟银行存取钱业务办理。假如有两个用户在存取钱,两个用户分别…

记事本怎么导入Excel文件 记事本数据导入Excel方法

在日常生活中,记事本软件已经成为了我不可或缺的助手,帮助我记录着点点滴滴,释放了大脑的负担。然而,随着时间的推移,记事本里的内容越来越多,如何高效地整理这些数据成为了一个新的问题。特别是当我需要将…

创建Net8WebApi自动创建OpenApi集成swagger

问题:用Net8创建WebAPI时勾选启动OpenAPI,项目自动集成了Swagger,但是接口注释没有展示? 解决: 1.需要生成Api项目的XML文件。操作如下: 2.生成XML文件后,还需要在启动类Program.cs里面配置Sw…

位运算(位运算的技巧、二进制中1的个数、区间或、异或森林)

一、移位操作符 1.1 左移操作符 << 作用&#xff1a;二进制数向左边移动&#xff0c;右边补0. #include<stdio.h> int main() {int a 10;int b a << 1;//将a的二进制向左移动一位printf("a%d\nb%d", a, b);return 0; } 左移操作符相当于对…

语文教学方法有哪些,产生了什么效果

你是否曾想过&#xff0c;一位普通的语文老师如何化身为智慧的引导者&#xff0c;点燃学生心中的求知之火&#xff1f;让我们一起探寻那些神奇的语文教学方法&#xff0c;以及它们带来的深远影响。 不仅让知识变得容易理解&#xff0c;更在无形中培养了学生的各项能力。通过谈话…

华中某科技大学校园网疑似dns劫持的解决方法

问题 在校园网ping xxx.ddns.net&#xff0c;域名解析失败 使用热点ping xxx.ddns.net&#xff0c;可以ping通 尝试设置windows dns首选dns为114.114.114.114&#xff0c;重新ping&#xff0c;仍然域名解析失败 猜测【校园网可能劫持dns请求】 解决方法 使用加密的dns请求…

制作照片数字人,让图片开口说话

一、软件安装 全部按照默认程序安装 最后安装完成后把所有按钮取消勾选&#xff0c;选择【Finish】&#xff0c;在弹出的界面中选择【否】。 然后点击管理员运行&#xff0c;直接全部默认&#xff0c;不更改位置。 二、制作数字人 根据自己的电脑位数&#xff0c;选择打开 选…

修改一个教材上的网站源码使它能在www服务器子目录上正常运行

修改一个教材上的网站源码&#xff0c;使它能在www服务器子目录上正常运行。 该网站源码是教材《PHPMySQL网站开发项目式教程》上带的网站源码。该源码是用 php html 写的。该源码包含对mysql数据库进行操作的php代码。以前该网站源码只能在www服务器的根目录上正常运行&…

【Docker】技术架构演变

【Docker】技术架构演变 目录 【Docker】技术架构演变架构中的概念架构演进单机架构相关软件 应用数据分离架构应用服务集群架构相关软件 读写分离/主从分离架构相关软件 引入缓存——冷热分离架构相关软件 垂直分库&#xff08;分布式数据库架构&#xff09;相关软件 业务拆分…

第八篇 - 预测受众(Predictive audience)技术是如何赋能数字化营销生态的?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒…