【数据结构】顺序表专题

devtools/2024/9/22 22:52:52/

前言

本篇文章我们来进行有关顺序表的专题训练,让我们一起来看一下有关顺序表的算法

💓 个人主页:小张同学zkf

⏩ 文章专栏:数据结构

📝若有问题 评论区见

🎉欢迎大家点赞👍收藏⭐文章

 1.移除元素

这道题看似简单,但我们不要忘了其中有个条件限制,空间复杂度O(1),所以做这道题时,我们不能创一个新的空间,否则空间复杂度过大与题不符。

所以我们最容易想到的第一种解法,创建新的数组,遍历原数组的思路就不行了

既然不能创建新的空间,那我们就只能在原数组内更改,这里我们有第二种思路,双指针法,创建两个指针,两个指针刚开始同时指向这个数组的首元素,一个指针用来在顺序表上遍历,若与要删除目标相等则继续往后遍历,若与要删除目标不相等,则将现在所指向的值直接赋值与另一个指针指向处,然后俩指针同时向后走,重复这个过程直到指向空,最后那个没指向空的指针就是要返回的长度

 

 

代码如下

 

有些人在这可能有些疑惑,说指针也没用指针呀,其实数组的下标性访问,就是指针访问嘛,一个思路嘛。 


2. 合并两个有序数组

第一种思路我们很容易想到的直接冒泡排序,但这个效率太低了,时间复杂度高

我们第二种思路三指针法,需要用到三个指针,l1指向下标为m处,l3指向下表为n+m-1处,l2指向第二个数组的最后一个元素处。然后l1和l2比较谁大放l3处,小的那个指针与l3向前移,重复这个过程直到l1都指向初始位置,或l2指向初始位置。

这里或许有人疑问了为什么是从后往前比较,而不是从前往后比较,我们仔细想一下若从前往后比较我们很有可能把原值覆盖,但从后往前比较就不会出现覆盖情况

这里结果就有两种情况,若l2先出循环正好有序,而且l2和l1已完全合并成一个数组,但若l1先出循环,l2还有数据没放到l1中,这里直接让l2剩余部分直接尾插到l1中就行了。 

 

代码如下: 

 


结束语 

本篇博客列举了两道有关顺序表的算法题,算是两道经典题了,若有什么问题,可以在评论区交流,下片博客我们继续对链表专题进行补充

OK,感谢观看!!!!


http://www.ppmy.cn/devtools/25606.html

相关文章

怎么做视频二维码更方便?在线一键生成视频活码二维码

现在经常会发现很多的二维码可以用来展示视频内容,通过这种方式来实现视频的快速分享与传播。二维码是一种成本低传播快的内容传播方式,很多的内容都可以通过生成二维码的方式来分享给其他人,可以同时扫描相同的二维码来获取内容,…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心,但又确乎说得上是19岁途中的又一枚勋章 从去年得知,纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客,记录好题和成长……感谢你们的关注&…

Nginx知识点汇总表格总结

Nginx在web应用中非常广泛,尤其是现在前后端分离项目中,前端的项目打包之后一般都习惯部署在Nginx下,方便利用Nginx做静态资源的缓存处理,动静分离,以及做反向代理,负载均衡,以及其他安全方面的…

go语言实现简单登陆返回token样例

目录 1、代码实现样例: 2、postman调用,获取登陆后的token: 1、代码实现样例: package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var …

LLaMA 3:大模型之战的新序幕

作者 | 符尧 OneFlow编译 翻译|杨婷、宛子琳、张雪聃 本文要点概览: 文本数据的扩展可能已经达到了极限,因为易于获取的网络文本资源(如Common Crawl、GitHub、ArXiv等)已基本被充分利用。 尽管如此,通过更…

解决HttpServletRequest中的InputStream/getReader只能被读取一次的问题

一、事由 由于我们业务接口需要做签名校验,但因为是老系统了签名规则被放在了Body里而不是Header里面,但是我们不能在每个Controller层都手动去做签名校验,这样不是优雅的做法,然后我就写了一个AOP,在AOP中实现签名校…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github:地址

C#中正则表达式(Regular Expression)

在C#中,正则表达式(Regular Expression)是一种强大的模式匹配工具,用于在文本中搜索、匹配和操作符合特定模式的字符串。它基于一种特定的语法,用于描述字符串的规则和模式。 正则表达式由各种字符和元字符组成&#…