算法训练 第一周

一、合并两个有序数组

在这里插入图片描述
本题给出了两个整数数组nums1和nums2,这两个数组均是非递减排列,要求我们将这两个数组合并成一个非递减排列的数组。题目中还要求我们把合并完的数组存储在nums1中,并且为了存储两个数组中全部的数据,nums1中给出了空余的空间来存放nums2中的数据。本题的做法有很多,在此我们主要讨论三种解题思路。

1.先合并后排序

我们可以先将nums2中的元素全部拷贝到nums1中的空闲空间中去,然后再将nums1整体排序即可,代码如下:

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int i = m;int j = 0;while(i < m + n) {nums1[i++] = nums2[j++];}Arrays.sort(nums1);}
}

2.正序双指针

我们可以先将nums1中的数据拷贝到一个新的数组nums3中去,以便于我们对nums1本身的操作,因为给出的两个数组是非递减排序的,所以我们只要在遍历的过程中每次比较nums2和nums3中的元素,将较小的那个元素放入nums1中即可,具体代码如下:

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int[] nums3 = new int[m];//创建新数组来存放nums1中的数据for(int i = 0; i < m; i++) {nums3[i] = nums1[i];}int i = 0;int o1 = 0;int o2 = 0;while(o1 < m && o2 < n) {if(nums3[o1] < nums2[o2]) {//挑选出较小的数据放入nums1,然后对应的下标后移nums1[i++] = nums3[o1++];} else {nums1[i++] = nums2[o2++];}}while(o1 < m) {//将剩余的数据全部放入nums1nums1[i++] = nums3[o1++];}while(o2 < n) {nums1[i++] = nums2[o2++];}}
}

3.倒序双指针

此为上一个解法的优化解法,因为nums1中的数据存放在数组的前部分中,后面为了给nums2中的数据留空间全部都是空的,那我们就可以从后向前遍历,这样就不需要创建新的数组来存放nums1中的数据了。只不过是我们需要每次选取nums1和nums2中较大的那个数据,然后从后向前的存入nums1,代码如下:

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

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

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

相关文章

签到系统怎么设计

背景 相信签到系统大家都有接触过&#xff0c;更多的是使用。但是有思考过这种系统是怎么设计的吗&#xff1f;比方说我统计一下每个月中每天的签到情况&#xff0c;怎么设计呢&#xff1f;今天一篇文章告诉你。 首先&#xff0c;我们熟悉的思维是&#xff1a;我设计一个数据…

[SSM]MyBatisPlus进阶

三、进阶篇 3.1映射 3.1.1自动映射规则 表名和实体类名映射 -> 表名user 实体类名User字段名和实体类属性名映射 -> 字段名name 实体类属性名name字段名下划线命名方式和实体类属性驼峰命名方式映射 -> 字段名 user_email 实体类属性名 userEmail 开启驼峰命名 m…

设计模式之适配器与装饰器

目录 适配器模式 简介 角色 使用 优缺点 使用场景 装饰器模式 简介 优缺点 模式结构 使用 使用场景 适配器模式 简介 允许将不兼容的对象包装成一个适配器类&#xff0c;使得其他类可以通过适配器类与原始对象进行交互&#xff0c;从而提高兼容性 角色 目标角色…

vite+vue3+element-plus

vitevue3element-plus 1.开始 npm create vitelatest app -- --template vuenpm installlnpm run dev2.引入element-ui npm install element-plus修改main.js import ElementPlus from element-plus import element-plus/dist/index.css createApp(App).use(ElementPlus).m…

BlueStore BlueFS rocksdb 关联性梳理

Tag: ceph 12.2.4 BlueStore空间初始化 BlueStore磁盘空间管理 总述 OSD挂载目录基于文件系统管理&#xff0c;Slow、WAL、DB空间区域基于裸盘管理&#xff1b;Slow区域&#xff1a;此类空间主要用于存储对象数据&#xff0c;由BlueStore管理&#xff0c;其中分配于BlueFS空…

AI篇-chatgpt基本用法(文心一言也适用)

目录 &#xff08;1&#xff09;基本规则 &#xff08;2&#xff09;例子1-文章摘要 &#xff08;3&#xff09;例子2-代码生成 &#xff08;4&#xff09;文心一言链接 &#xff08;1&#xff09;基本规则 相比于搜索引擎&#xff0c;ChatGPT的优势在于其高效的想法关联和…

MyBatisPlus之DQL编程控制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MyBatisPlus之DQL编程控制 一、 条件查询方式&…

Spring项目配置

1.创建项目 2.修改编码格式为UTF-8 3.检查或配置代码⾃动补全功能 4.检查或配置⾃动导包 5.检查或配置Maven&#xff0c;可以⽤国内仓库镜像 6.idea识别Maven项⽬&#xff1a;在Notifications视图中会提⽰Load Maven Project&#xff0c;点击即可。 7.开启热部署 a.确认 pom.x…

EasyPOI处理excel、CSV导入导出

1 简介 使用POI在导出导出excel、导出csv、word时代码有点过于繁琐&#xff0c;好消息是近两年在开发市场上流行一种简化POI开发的类库&#xff1a;easyPOI。从名称上就能发现就是为了简化开发。 能干什么&#xff1f; Excel的快速导入导出,Excel模板导出,Word模板导出,可以…

无涯教程-JavaScript - SECOND函数

描述 SECOND函数返回时间值的秒数。第二个数字以0(零)到59之间的整数形式给出。 语法 SECOND (serial_number)争论 Argument描述Required/OptionalSerial_number 您想找到包含秒数的时间。 时间可以输入为- 引号内的文本字符串(如" 6:45 PM") 十进制数(如0.7812…

LCD驱动电路IC简述

Panel 模块驱动图示 1.Panel内部驱动 2.驱动原理框图 2.1.1 TCON(Timing Controller):时序控制器。主要功能为数据的转换及时序控制信号生成。 2.2.2 Gate控制信号工作时序 OE1 &#xff08;output enable&#xff09;:输出控制使能信号。OE2&#xff08;Multi Level Gate)&…

数字化新零售平台系统提供商,门店商品信息智慧管理-亿发进销存

传统的批发零售业务模式正面临着市场需求变化的冲击。用户日益注重个性化、便捷性和体验感&#xff0c;新兴的新零售模式迅速崛起&#xff0c;改变了传统的零售格局。如何在保持传统业务的基础上&#xff0c;变革发展&#xff0c;成为了业界亟需解决的问题。 在这一背景下&…

AP51656 LED车灯电源驱动IC 兼容替代PT4115 PT4205 PWM和线性调光

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源 用于驱动一颗或多颗串联LED 输入电压范围从 5V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用高端电流采样设置 …

Docker的数据管理(持久化存储)

文章目录 一、概述二、数据卷三、数据卷容器四、端口映射五、容器互联&#xff08;使用centos镜像&#xff09;总结 一、概述 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&a…

Spark 环境安装与案例演示

Spark 环境安装 一、准备工作 1、hadoop成功安装 2、防火墙关闭 二、解压安装 1、上传 spark 安装包到/tools 目录&#xff0c;进入 tools 下&#xff0c;执行如下命令&#xff1a; tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz -C /training/由于 Spark 的脚本命令和 Hadoop…

Astro建站教程:安装nodejs,npm下载Astro,安装扩展

下载Nodejs LTS版&#xff1a;https://nodejs.org/en 安装步骤全默认即可&#xff0c;安装路径可以根据自己的爱好更改在桌面右键打开cmd或powershell&#xff0c;输入node -v和npm -v测试是否安装成功 浏览器打开https://docs.astro.build/en/install/auto/ 复制里面的npm cre…

OB Cloud助力泡泡玛特打造新一代分布式抽盒机系统

作为中国潮玩行业的领先者&#xff0c;泡泡玛特凭借 MOLLY、DIMOO、SKULLPANDA 等爆款 IP&#xff0c;以及线上线下全渠道营销收获了千万年轻人的喜爱&#xff0c;会员数达到 2600 多万。2022 年&#xff0c;泡泡玛特实现 46.2 亿元营收&#xff0c;其中线上渠道营收占比 41.8%…

找redis大key工具rdb_bigkeys

github官网 https://github.com/weiyanwei412/rdb_bigkeys 在centos下安装go [roothadoop102 rdb_bigkeys-master]# wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz [roothadoop102 rdb_bigkeys-master]# tar -zxf go1.13.5.linux-amd64.tar.gz -C /usr/local将g…

【开发问题系列】CSV转Excel

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

element+vue table表格全部数据和已选数据联动

1.组件TableChoose <template><div class"tableChooseBox"><div class"tableRow"><div class"tableCard"><div class"tableHeadTip">全部{{ labelTitle }}</div><slot name"body" …