day01 代码随想录算法训练营 27. 移除元素
题目:
感悟:
- 用快慢指针。
- 本题是要原地删除。
- 而删除这个行为在真实的计算机的数组里,是覆盖。
- 所以,就用两个指针,(人)
- 一个跑的快,一个跑的慢。他们身上带了个对讲机。
- 跑的快的那个人负责检测后面的数字符合要求不,
- 比如,题目要求等于3的。
- 那么跑的快那个人,遇到一个2,告诉跑的慢的,说2符合要求。
- 遇到一个3,告诉跑的慢的,说3不符合要求。
- 跑的慢的,那个人负责写入数据。接收到数据就写入。
- 最后都执行完了,返回慢指针那个位置就是新数组的长度,。
记忆点:
- 快慢指针,
- 想象修铁路的两个工人。用个对讲机传递。
难点:
- 理解删除是覆盖。这种思想。
- size 是len(nums)-1 因为要取到最后一个
- while <= 也是要取到最后一个。
- 当然也可以写成len(nums),while就要改成<
- 保持一致就可以。
代码示例:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
fast = 0
slow = 0
size = len(nums) - 1
while fast <= size:
# 对讲机赋值
if nums[fast] != val:
nums[slow] = nums[fast]
slow +=1
fast+=1
return slow
通过截图:
资料:
题目链接:https://leetcode.cn/problems/remove-element/
文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~