合并两个有序数组【leetcode】

1. 题目:

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

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

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

2. 思路:

每次比较两个数组中最大的元素即可。

① 首先分别拿两个数组中最大的元素出来作比较,较大的元素放在 num1 数组的 m+n-1 位置处,则当前元素的原位置索引(m 或 n)减减,目的指向下一个待比较的元素,而我们的 num1 空位置索引也要减减,目的指向下一个空位置,这里的空位置索引我们就用 m+n-1 来表示,当 m 或 n 减减的同时,该空位置索引也会随着减减;

② 这个比较过程是要重复进行的,什么时候停止?当比较的位置已经到达了最左边,即索引为 0 的时候,我们就不可能再去比较了,因为这里的 m-1 和 n-1 才是两个数组各自的索引,则循环条件就是 m > 0 && n > 0,只要有一个数组遍历到了尽头,就退出循环;

③ 循环不满足条件退出之后,如果 n<0,但 m>0 或者 n 和 m 都小于 0,就代表 num2 中的元素已经全部插入到 num1 中了,这个时候就算合并完成;

④ 如果 m<0,但 n>0,这种情况就是 num1 中的元素已经全比较完了,只剩下 num2 的元素等待插入,所以这个时候我们还需要一个 while 循环,用于将 num2 中的元素依次插入到 num1 中,空位置索引还是 m+n-1,每次 n 减减,直到 n 等于0。

3. 代码实现:

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {while (m > 0 && n > 0) {if(nums1[m - 1] > nums2[n - 1]) {nums1[m + n - 1] = nums1[m - 1];m--;} else {nums1[m + n - 1] = nums2[n - 1];n--;}}while (n > 0) {nums1[m + n - 1] = nums2[n - 1];n--;}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试框架pytest教程(9)跳过测试skip和xfail

skip无条件跳过 使用装饰器 pytest.mark.skip(reason"no way of currently testing this") def test_example(faker):print("nihao")print(faker.words()) 方法内部调用 满足条件时跳过 def test_example():a1if a>0:pytest.skip("unsupported …

基于Redis的BitMap实现签到、连续签到统计(含源码)

微信公众号访问地址&#xff1a;基于Redis的BitMap实现签到、连续签到统计(含源码) 推荐文章&#xff1a; 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、基于Redis的Geo实现附…

python小脚本——批量将PDF文件转换成图片

语言&#xff1a;python 3 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为: pdf文件名.page_序号.jpg 如运行中报错&#xff0c;需要自行根据报错内容按照缺失的库 例如&#x…

ORB-SLAM系列算法演进

ORB-SLAM算法是特征点法的代表&#xff0c;当前最新发展的ORB-SLAM3已经将相机模型抽象化&#xff0c;适用范围非常广&#xff0c;虽然ORB-SLAM在算法上的创新并不是很丰富&#xff0c;但是它在工程上的创新确实让人耳目一新&#xff0c;也能更好的为AR、机器人的算法实现落地。…

CF 514 C Watto and Mechanism(双哈希)

CF 514 C. Watto and Mechanism(双哈希) Problem - 514C - Codeforces 大意&#xff1a;给出 n 个字典串 &#xff0c;现给出 m 个查询串 &#xff0c; 问是否存在字典串与当前查询串仅差一个字母。每个串仅包含 {‘a’ , ‘b’ , ‘c’ } 三个字母 。 思路&#xff1a;考虑…

Linux编程:在程序中异步的调用其他程序

Linux编程:execv在程序中同步调用其他程序_风静如云的博客-CSDN博客 介绍了同步的调用其他程序的方法。 有的时候我们需要异步的调用其他程序,也就是不用等待其他程序的执行结果,尤其是如果其他程序是作为守护进程运行的,也无法等待其运行的结果。 //ssss程序 #include …

操作教程|通过1Panel开源Linux面板快速安装DataEase

DataEase开源数据可视化分析工具&#xff08;dataease.io&#xff09;的在线安装是通过在服务器命令行执行Linux命令来进行的。但是在实际的安装部署过程中&#xff0c;很多数据分析师或者业务人员经常会因为不熟悉Linux操作系统及命令行操作方式&#xff0c;在安装DataEase的过…

LeetCode42.接雨水

这道题呢可以按列来累加&#xff0c;就是先算第1列的水的高度然后再加上第2列水的高度……一直加到最后就是能加的水的高度&#xff0c;我想到了这里然后就想第i列的水其实就是第i-1列和i1列中最小的高度减去第i列的高度&#xff0c;但是其实并不是&#xff0c;比如示例中的第5…

【蓝桥杯】 [蓝桥杯 2015 省 A] 饮料换购

原题链接&#xff1a;https://www.luogu.com.cn/problem/P8627 1. 题目描述 2. 思路分析 小伙伴们可以看看这篇文章~ https://blog.csdn.net/m0_62531913/article/details/132385341?spm1001.2014.3001.5501 我们这里主要讲下方法二的推导过程&#xff1a; 列方程。 设最…

企业数字化转型需要解决哪些问题?

随着信息技术的不断发展和应用&#xff0c;企业数字化转型已成为提高竞争力和实现可持续发展的必经之路。合沃作为一家专注于为企业提供工业物联网产品与解决方案的企业&#xff0c;拥有丰富的经验和技术实力&#xff0c;正致力于助力企业实现数字化转型。本文将探讨企业数字化…

流的基本概念

流的基本概念 Streaming 101与Streaming 102原文网页 文章目录 流的基本概念术语什么是流无界数据无界数据处理有界数据批处理引擎流引擎低延迟、近似、推测结果正确性时间推理工具 数据处理模式使用经典批处理引擎进行有界数据处理用经典批处理引擎通过临时固定窗口进行无界数…

物联网无线通信方式总结

本文主要内容(一些物联网无线通信方式) 本文将介绍一些物联网无线通信方式的技术特点、底层调制方式和主要应用场景物联网无线通信方式是指利用无线技术实现物体之间的信息交换和网络连接的方式物联网无线通信方式的选择需要考虑多种因素&#xff0c;如传输距离、功耗、数据速…

天翼物联、汕头电信与汕头大学共建新一代信息技术与数字创新(物联网)联合实验室

近日&#xff0c;在工业和信息化部和广东省人民政府共同主办的2023中国数字经济创新发展大会上&#xff0c;天翼物联、汕头电信与汕头大学共建“新一代信息技术与数字创新&#xff08;物联网&#xff09;”联合实验室签约仪式举行。汕头大学校长郝志峰、中国电信广东公司总经理…

字符集与字符编码

目录 一、字符集概述二、Unicode三、Unicode字符集四、Unicode编码规则五、Unicode字符编码规则 UTF-8六、Unicode 字符编码规则 UTF-16七、Unicode 字符编码规则 UTF-32八、UTF 字节顺序标记(BOM)九、Windows 代码页十、Windows(ANSI) 字符集十一、GB2312、GBK、GB18030 一、字…

leetcode原题: 堆箱子(动态规划实现)

题目&#xff1a; 给你一堆n个箱子&#xff0c;箱子宽 wi、深 di、高 hi。箱子不能翻转&#xff0c;将箱子堆起来时&#xff0c;下面箱子的宽度、高度和深度必须大于上面的箱子。实现一种方法&#xff0c;搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。 输入使用数组…

elelementui组件

一、按钮 1、按钮样式 使用type、plain、round和circle属性来定义 Button 的样式。 2、主要代码 <el-row><el-button>默认按钮</el-button><el-button type"primary">主要按钮</el-button><el-button type"success">…

SQL函数和过程

一、存储过程概述 1.1 理解 含义&#xff1a;存储过程的英文是 Stored Procedure 。它的思想很简单&#xff0c;就是一组经过 预先编译 的 SQL 语句 的封装。 执行过程&#xff1a;存储过程预先存储在 MySQL 服务器上&#xff0c;需要执行的时候&#xff0c;客户端只需要向服…

DataLoader PyTorch 主要参数的含义

定义&#xff1a; DataLoader类是一个用于从数据集&#xff08;dataset&#xff09;中加载数据&#xff0c;并以迭代器&#xff08;iterator&#xff09;的形式返回数据样本&#xff08;data samples&#xff09;的工具。您给出的两个字典&#xff08;dictionary&#xff09;分…

(三)行为模式:2、命令模式(Command Pattern)(C++示例)

目录 1、命令模式&#xff08;Command Pattern&#xff09;含义 2、命令模式的UML图学习 3、命令模式的应用场景 4、命令模式的优缺点 5、C实现命令模式的实例 1、命令模式&#xff08;Command Pattern&#xff09;含义 命令模式&#xff08;Command&#xff09;&#xff…

简单屏幕共享 通过web screego windows 生成证书

生成证书用 linux 生成&#xff0c;在 windows 下使用 windows 生成证书 https://juejin.cn/post/6925006735933440014 下载地址 https://github.com/screego/server/releases 修改完配置后&#xff0c;运行 screego serve 需要修改的几个地方 # 局域网 ip 或公网 ip&…