代码随想录刷题|数组、链表的总结

简介: 代码随想录刷题|数组、链表的总结

数组

二分查找(查)

       二分查找的条件:

               1、数组是有序数组

               2、数组中无重复元素(一旦有了重复的数组使用二分法返回的条件就不唯一了)

       二分查找的关键点:

这道题目主要的关键点就在于保持“区间的不变量”,对区间右边的定义决定了要使用左闭右开还是左开右闭。右开就是这个下标对数组有效,右闭就是这个下标对数组无效


       总结:


               对于数组来说,当知道一个元素的下标之后,查询一个数字是很快的,时间复杂度是O(1),一步到位。


               但是如果不知道元素的下标,只知道要查询的元素,这种情况下就只能进行对数组进行遍历,从第一个元素开始查找,进行比较,这个时间复杂度是O(n)


               此时,如果这个数组符合二分查找的条件,那就可是使用二分查找进行操作,一步一步缩小元素可能出现的范围,这个时间复杂度是O(logn),其中n 是数组的长度


移除元素(删)


 数组真是出了通过下标查找元素的时候方便,然后就是干啥都不方便


       这道题目是要删除数组中出现过的目标值元素,如果数组中元素不重复的,我们可以创建一个比原数组长度小于1 的数组,然后将不是目标值的数组移动到新数组中,这样时间复杂度是O(n),空间复杂度是O(n),因为需要开辟一块空间重新进行存储。


       但是这道题目并没有说明元素是不可重复的,而且强调了要删除所有的目标值,这一条就比比较复杂,因为就算创建新数组,你不知道创建多长的,其实也可以整,但就是比较麻烦


       而且这道题目明确要求必须仅使用O(1) 额外空间并原地修改数组,所以要牺牲时间来获取空间,那就使用两重遍历,第一for循环找数,第二for循环移动元素,这样时间复杂度是O(n^2),也就是暴力解法


       因为力扣的输出不用管,但是它会按照你返回的数组长度进行遍历,本质上你的数组长度并没有发生变化,只是你给一个数组长度,它只会遍历输出到这里,所以每删除一个元素要在长度上进行减操作


       此时,有一个思路就很妙了,那就是双指针法,双指针可以说是双层for循环的一种替代,但是通过双指针在不增加空间的情况下来降低时间复杂度。


       一个快指针在前面进行判断,一个慢指针在后面进行收割,这两个指针代表的都是数组的下标


       其实遍历数组的时候,就是在用 i 指针进行遍历,指哪取哪


       这里增加了一个指针,遍历时,i 在前面指,然后 if 进行判断,如果不是我们要查找的目标值,那我就把你保留着,如果不是,我就不鸟你,i 继续。同时慢指针负责记录要返回的数组长度的工作


       总结:

               用好双指针,通过两个指针在一个for循环下完成两个for循环的工作


               双指针在数组、链表、N数之和、字符串 中用起来都很绝:


                       数组:

                               移除元素

                               有序数组的平方

                               长度最小的子数组                      


                       链表:

                               翻转链表

                               删除链表中的倒数第n个元素

                               链表相交

                               环形链表


                       N数之和:

                               三数之和

                               四数之和    


                       字符串:

                               反转字符串

                               替换空格

                               反转字符串里的单词  


有序数组的平方

 首先是数字的平方,这个好办,进行遍历,然后每个元素平方就可以了,麻烦就麻烦在有序上,因为存在负数,我们先平方后,然后再对平方后的数组进行排序就可以了,这是一种暴力的解法,而且用到了java语言特有的工具类

       哪怎么可以在不使用工具类的情况下进行排序呢,就需要我们对得到的新元素进行排序


       其次是有序数组,因为存在负数,其实两头的元素平方下来是最大的

       题目的条件是这是一个递增的数组,而且平方之后的数组也是需要递增的,也就是返回的数组也要是递增的数组,这个条件能有什么用,能做什么文章呢


       哪接下来要考虑的就是怎么比较,怎么排序了

               首先考虑一下,能不能在原数组中进行排序呢?可以,但是会时间复杂度比较高,埋个线(好好了解一下数组的排序问题)

               我们需要的是利用题目的特点进行排序,其实数组中的元素平方后,我们不能马上找到最小的数字,我们最有可能的就是有机会找到最大的数字,那就是要么是第一个元素,要么就是最后一个元素,那就对这两个元素进行比较,将最大的放在数组的末尾,然后小的那个元素进行待命,继续比较


       接下来就是往哪放的问题了

               如果是往原数组中放,会造成数字的丢失,因为从两头进行比较的话,可能有些数字还没比较就被覆盖了

               所以那就开辟一下新的空间存放新的数组,返回的数组要是有序的,我们不能马上找到最小的元素,不能从小到大地放,只能从大到小,所以存放结果的时候,从新数组的最后一位往前放


       总结:


               开辟新的空间存放新数组

               原数组定义两个指针从两边开始进行比较

               将比较出的大的元素依次从新数组的后面往前进行存放


长度最小的子数组

螺旋矩阵||

       数组的模拟,保持区间不变量

总结


二分查找是查,用元素的值查,是有序不重复的数组


       移除元素是删,不开辟新空间的删,双指针顶两个for


       有序数组的平方是改+排序,改好办,就是不好排序,开辟空间,利用题目特点进行排序


       长度最小的子数组是更高一层的查,我不仅要查,还要在查的同时搞点事情,子数组是连续的,用双指针滑动窗口


       螺旋矩阵是用数组模拟,考察的是对数组的掌握程度,更具体点是对数组遍历的掌握程度


       所以一般的考虑思路就能有个大概的方向:

               能不能暴力解决

               查是不需要开辟新地址的,可以暴力试试,但是怎么可以查得方便是需要考虑的

               删和改有时需要开辟新空间(因为要返回数组),可不可以不开辟空间进行呢

               使用双指针会不会更方便呢


链表

移除链表元素

设计链表

反转链表

两两交换链表中的节点

删除链表的倒数第N个节点

链表相交

环形链表||

总结

相关文章
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1572 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1939 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
526 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2559 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
720 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2634 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
6天前
|
人工智能 JSON Shell
2026AI漫剧本地全开源方案(附各个软件模型链接),8G显卡也能流畅运行
这是一套完全本地化部署的AI漫剧生成技术链路:涵盖LLM剧本分镜生成、FLUX文生图(IP-Adapter人脸锁定)、StoryDiffusion时序连贯控制、LTX-2.3唇形同步视频生成,及ComfyUI全流程调度。零云端费用,仅耗硬件算力,单集2–4小时可产出竖屏短视频,适配抖音/B站分发。
|
7天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
446 1

热门文章

最新文章