【刷题记录】合并两个有序数组、移除元素

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.题目链接:
T1:LINK
T2:LINK

2.详解思路:

T1:
在这里插入图片描述
在这里插入图片描述
思路1:弄个新数组,比较两个数组中的值,哪个小就把哪个值放到新数组中。
在这里插入图片描述

分析1:时间复杂度:O(N);空间复杂度:O(N)
但是显然在本题中题目明确表示要放在原数组中,否定该思路。
思路2:把nums2内容拷贝到nums1有效数据的后面,再进行排序
在这里插入图片描述
分析2:否定,仅排序而言时间复杂度:O(N*logN)
思路3:造三个指针,倒序条件赋值
在这里插入图片描述
分析3:时间复杂度O(N) 空间复杂度O(1) so:优秀算法
代码如下:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int end1 = m - 1;int end2 = n - 1;int end = m + n - 1;//开始赋值while(end1>=0&&end2>=0){if(nums1[end1]>nums2[end2]){nums1[end--] = nums1[end1--];}else{nums1[end--] = nums2[end2--];}}//当end1或者end2小于0了就跳出循环了,就会出现两种局面//局面1:end1为0但是end2不为0,这时候只需要把nums2中剩下的数据搬到nums1即可if(end1<0&&end2>=0){int i = 0;for(i = end2;i>=0;i--){nums1[end--] = nums2[i];}}//局面2:end1不为0但是end2为0,那就不用管了,刚好满足题目}

T2:
在这里插入图片描述
思路1:创建一个新数组,原来数组不是我们要移除的元素的我们就拷贝到新数组中即可。
在这里插入图片描述
分析1:题目要求原地删除,该做法不满足题意
思路2:我们在原数组中,找到一个要删除的数字我就把他后面的所有元素都往前挪动一位
在这里插入图片描述
分析2:否定,时间复杂度O(N*N)
思路3:造两个指针,一个指针记录有效的数字个数,另一个指针在前面探路
在这里插入图片描述
分析3:时间复杂度:O(N)优秀思路!
代码实现:

int removeElement(int* nums, int numsSize, int val) {int i = 0;int p1 = 0;//探路者int p2 = 0;//守家者for(i = 0;i<numsSize;i++){if(nums[p1]==val){p1++;}else{nums[p2++] = nums[p1++];}}return p2;
}

完。

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

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

相关文章

optee UTA加载

流程 动态TA按照存储位置的不同分为REE filesystem TA&#xff1a;存放在REE侧文件系统里的TA&#xff1b; Early TA&#xff1a;被嵌入到optee os里的在supplicant启动之前就可用了。 这里我们讲的是常规的存放在REE侧文件系统里的TA。 通过GP标准调用的与TA通信的命令(opens…

4.【Linux】进程控制(进程终止||进程等待||程序替换)

一.进程创建fork 见上篇文章 二.进程的终止 1.进程退出场景 1.代码运行完毕&#xff0c;结果正确&#xff0c;通过main函数退出码返回一般为0。 2.代码运行完毕&#xff0c;结果不正确&#xff0c;通过不同的退出码标识不同的错误原因。 3.代码异常终止&#xff08;信号&am…

模型 4R(关联、反应、关系、回报)理论

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。重在提升认知。以关系促营销。 1 4R(关联、反应、关系、回报)理论的应用 1.1 4R模型在小米客户关系管理中的应用 小米公司是一家以生产智能手机和消费电子产品而闻名的公司&#xff0c;它在客户关系管理…

2022年12月电子学会青少年软件编程 中小学生Python编程等级考试二级真题解析(判断题)

2022年12月Python编程等级考试二级真题解析 判断题(共10题,每题2分,共20分) 26、字典的元素可以通过键来访问,也可以通过索引(下标)来访问 答案:错 考点分析:考查字典相关知识,字典的元素只能通过键来访问,所以错误 27、Python中,可以通过索引来访问列表、字符串等…

常见的几种Web安全问题测试简介

Web项目比较常见的安全问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web 里面的html 代码会被执行&#xff0c;从而达到恶意用户的特殊…

现代化端口扫描工具RustScan

今天是大年初五&#xff0c;喜迎财神 &#xff0c;祝大家✔️顺风顺水 ✔️诸事如意 ✔️财源滚滚 ✔️大吉大利 顺便提一下&#xff0c;老苏的博客启用了新域名&#xff1a; https://laosu.tech 什么是 RustScan &#xff1f; RustScan 是一款现代化的端口扫描器。能快速找到端…

积分(一)——复化梯形积分(C++)

梯形积分 设f(x)在[a,b]上连续&#xff0c;若要计算其积分&#xff0c;则 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_a^b f(x)dx F(b) - F(a) ∫ab​f(x)dxF(b)−F(a) 其中F(x)为f(x)的原函数&#xff0c;但是计算机直接计算出该积分函数比较困难&#xff0c;因此需要近…

SolidWorks学习笔记——草图绘制的基本命令

目录 一、进入草图绘制 二、直线命令与删除命令 三、圆弧命令与矩形命令 四、槽口命令以及多边形命令 五、椭圆以及倒角命令 六、草图绘制中的剪裁命令 七、草图中的几何关系 八、草图绘制中的智能尺寸 九、从外部粘贴草图&#xff08;CAD&#xff09; 一、进入草图绘…

【蓝桥杯省赛真题23】python水仙花数 青少年组蓝桥杯比赛python编程省赛真题解析

目录 python水仙花数 一、题目要求 1、编程实现 2、输入输出

AJAX——AJAX入门

1 什么是AJAX&#xff1f; Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。 简单点说&#xff0c;就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON、XML、HTML和test文本等格式发送和接收数据。 AJAX最吸…

隐函数的求导【高数笔记】

1. 什么是隐函数&#xff1f; 2. 隐函数的做题步骤&#xff1f; 3. 隐函数中的复合函数求解法&#xff0c;与求导中复合函数求解法有什么不同&#xff1f; 4. 隐函数求导的过程中需要注意什么&#xff1f;

java8默认方法

口什么是默认方法 口如何以一种兼容的方式改进API 口默认方法的使用模式 口 解析规则 传统上&#xff0c;Java程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供一个实现&#xff0c;或者从父类中继承它的实现。但是&#xff0c;一…