LeetCode88——合并两个有序数组
LeetCode88——合并两个有序数组
1.题目描述:
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

2.Result01:
先将数组nums2中的元素全部存入nums1中,再对nums1数组进行排序。

public static int[] merge(int[] arr1,int len1,int[] arr2,int len2){//先 添加for (int i = 0; i < len2; i++) {arr1[len1++] = arr2[i];}//后 排序Arrays.sort(arr1);return arr1;}
时间复杂度:取决于排序算法的时间复杂度。
空间复杂度:O(1)

3.Result02
利用上数组非递减顺序排列的这一特性,创建一个新数组(长度与arr1相同),用两个指针分别指向两个数组元素的末端,谁比较大就放在新建数组的末端(倒序存放),最后再将新建数组的元素赋值给第一个数组。


public static int[] merge(int[] arr1, int len1, int[] arr2, int len2) {//len1表arr1中的有效元素个数 len2同理//如果arr1中的元素个数为0,那么直接将arr2元素一一赋给arr1即可if (len1 == 0) {for (int i = 0; i < len2; i++) {arr1[i] = arr2[i];}return arr1;}//根据题意创建新数组的长度设置为arr1的长度即可,因为题中已说明arr1的长度足以存入两个数组的全部元素int[] tempArr = new int[arr1.length];//i,j分别指向各自数组的最后一个有效元素int i = len1 - 1;int j = len2 - 1;//k指向新数组的最后一个位置int k = tempArr.length - 1;while (i >= 0 && j >= 0) { //防止数组下标越界//谁大就把谁的值放在新数组中 并执行--前移操作if (arr1[i] >= arr2[j]) {tempArr[k--] = arr1[i--];} else {tempArr[k--] = arr2[j--];}}//在上述while循环i j不可能同时小于0//如果i<0 证明 arr1中元素已比较完并且全部加入了新数组中 但arr2中还有元素未存(j未<0)if (i < 0) {//先将已经比较好的新数组中的元素 按相应位置 赋值到arr1中for (int l = j + 1; l < tempArr.length; l++) {arr1[l] = tempArr[l];}//再将二中未合并的剩余元素 按顺序赋值到arr1中while (j>=0){arr1[j] = arr2[j];j--;}return arr1;//如果j<0 证明 arr2中的数组已全部处理完毕} else {//将新数组中已处理好的元素 一一按照相应位置覆盖到 arr1 中即可for (int l = i + 1; l < tempArr.length; l++) {arr1[l] = tempArr[l];}}return arr1;}
时间复杂度:O(m+n) ,空间复杂度O(m+n)

相关文章:
LeetCode88——合并两个有序数组
LeetCode88——合并两个有序数组 1.题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减…...
C++ BinarySercahTree recursion version
for循环版本的:C BinarySercahTree for version-CSDN博客 Inorder()在c BinarySerschTree for verison写了。 还是按照那种嵌套的方式来写递归。 现在来写查找 FindR() bool FindR(){return _FindR(_root);}然后_FindR()函数写递归具体实现: 假设要…...
兑换码生成与解析-个人笔记(java)
1.需求分析 兑换码长度为10字符,包含24个大写字母和8个数字。兑换码需要保证唯一性,不可重复兑换。需要防止猜测和爆刷攻击。兑换码生成和验证的算法需要高效,避免对数据库带来较大的压力。 导航 1.需求分析2.实现方案3.加密过程4.解密过程5…...
2023/10/25MySQL学习
外键约束 在子表添加外键后,不能在主表删除或更新记录,因为存在外键关联 删除外键,注意外键名称时我们添加外键时起的名称 使用cascade操作后,可以操作主表数据,并且子表的外键也会对应改变 set null的话,删除主表对应主键信息后,子表对应外键信息变为空 多表关系 创建中间表 可…...
网络协议--Ping程序
7.1 引言 “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答(图6-3列出了所有的ICMP报文类型)。 一般来说&#x…...
如何在 Azure 容器应用程序上部署具有 Elastic Observability 的 Hello World Web 应用程序
作者:Jonathan Simon Elastic Observability 是提供对正在运行的 Web 应用程序的可见性的最佳工具。 Microsoft Azure 容器应用程序是一个完全托管的环境,使你能够在无服务器平台上运行容器化应用程序,以便你的应用程序可以扩展和缩减。 这使…...
JAVA排序
再看各种排序前我们先了解一下什么叫 稳定性 比如一组数据arr[i]下标与arr[j下标]相等,arr[i]在前面,arr[j]在arr[i]后面,排序后这两个数据仍然是arr[i]在arr[j]前面,arr[j]在arr[i]后面,这就叫稳定 插入排序: 优势: 越有序查找速度越快 时间复杂度: O(N^2) 空间复…...
opencalib中lidar2camera安装记录
目录 一、opencalib安装 二、lidar2camera的安装 三、测试运行 四、出现过的问题 一、opencalib安装 代码地址:https://github.com/PJLab-ADG/SensorsCalibration/blob/master/README.md # pull docker image sudo docker pull scllovewkf/opencalib:v1 # Aft…...
整个自动驾驶小车001:概述
材料: 1,树梅派4b,作为主控,这个东西有linux系统,方便 2,HC-S104超声波模块,我有多个,不少于4个,我可以前后左右四个方向都搞一个 3,l298n模块,…...
windows本地搭建mmlspark分布式机器平台流程
文章目录 windows本地搭建mmlspark分布式机器平台流程安装环境pyspark环境spark环境java环境hadoop环境1.修改hadoop配置文件下的jdk地址为自己的实际地址2.修改bin文件离线环境jar包环境1mmlsprk第三方包jar包环境2参考代码我有话说其他问题记录概要参考文献windows本地搭建mm…...
深入探究 Next.js 中的 getServerSideProps 和 getStaticProps 用法及区别
引言: Next.js 是一个流行的 React 框架,它提供了许多强大的功能来简化服务器渲染(SSR)和静态生成(SSG)的过程。其中,getServerSideProps 和 getStaticProps 是两个重要的函数,用于在…...
餐饮业如何高效经营?赶紧闭眼抄这个方法!
在现代社会,餐饮业已经成为人们日常生活中不可或缺的一部分。为了提高食堂运营效率,满足不断增长的客户需求,智慧收银系统应运而生。 智慧收银系统帮助食堂业主更好地理解其客户,提高服务质量,优化库存管理,…...
餐饮外卖小程序商城的作用是什么
随着互联网及线上餐饮的发展趋势,行业洗牌正在加速,并且对餐饮连锁门店提出更高要求,餐饮数字化转型加快,积极发展线上经营是不少餐饮商家的首选。这其中,餐饮外卖商城成为很多餐饮品牌的线上经营品牌,也是…...
nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植
参考资料:Nrf52832 freeOS系统移植_nrf5283操作系统-CSDN博客 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正。 把FreeRTOS移植到 nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart工程ÿ…...
电厂数据可视化三维大屏展示平台加强企业安全防范
园区可视化大屏是一种新型的信息化手段,能够将园区内各项数据信息以图像的形式直观呈现在大屏幕上,便于管理员和员工进行实时监控、分析和决策。本文将从以下几个方面介绍园区可视化大屏的作用和应用。 VR数字孪生园区系统是通过将实际园区的各种数据和信…...
2246: 【区赛】【宁波32届小学生】最佳交换
目录 题目描述 输入 输出 样例输入 样例输出 提示 代码 题目描述 星星小朋友和 N-1 个小伙伴一起玩了一上午的纸牌游戏,星星总是能赢,气焰嚣张, 小伙伴们决定出道纸牌问题难倒星星,让他别再狂妄自大了,问题是这…...
Java面试记录
文章目录 1、final关键字2、synchronized关键字(1)synchronized的功能:(2)synchronized的底层实现原理: 3、Java中线程同步的实现方法(1). 使用synchronized关键字:&…...
【数据库】聚集函数
聚集函数 聚集函数一览AVG() 函数COUNT() 函数MAX() 函数MIN() 函数SUM() 函数 组合聚集函数 聚集函数一览 我们需要汇总数据而不是实际检索,此时我们使用聚集函数进行处理; 聚集函数一览表如下: 函数说明AVG()返回平均值COUNT()返回数量总…...
【单元测试】--编写单元测试
一、编写第一个单元测试 编写第一个单元测试通常包括以下步骤。以下示例以C#和NUnit为例: 创建测试项目: 在Visual Studio中,创建一个新的Class Library项目,这将是你的单元测试项目。在解决方案资源管理器中,右键点…...
ES(elasticsearch) - 三种姿势进行分页查询
1. from size 浅分页 "浅"分页可以理解为简单意义上的分页。它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据。这样其实白白浪费了前10条的查询。 GET test_dev/_search {"query": {"bool&…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
