【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。

更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~

👍感谢小伙伴 们点赞、关注!

快慢指针

移动零

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| class Solution : def moveZeroes****(**** self****,**** nums****:**** List****[**** int ]) -> None : """ Do not return anything, modify nums in-place instead. """ left = 0 n = len ( nums****)**** for i in range ( n****):**** if nums****[**** i****]**** != 0****:**** nums****[**** left****],**** nums****[**** i****]**** = nums****[**** i****],**** nums****[**** left****]**** left += 1 return nums class Solution : def moveZeroes****(**** self****,**** nums****:**** List****[**** int ]) -> None : """ Do not return anything, modify nums in-place instead. """ j = 0 for i in range ( len ( nums****)):**** if nums****[**** i****]**** != 0****:**** nums****[**** j****]**** = nums****[**** i****]**** if i != j****:**** nums****[**** i****]**** = 0 j += 1 return nums |

链表

两两交换链表中的节点

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 迭代 class Solution : def swapPairs****(**** self****,**** head****:**** ListNode****)**** -> ListNode****:**** # 通过迭代实现 dummy = ListNode****(-**** 1****)**** dummy****.**** next = head prev_node = dummy while head and head****.**** next : first_node = head second_node = head****.**** next # 交换节点 prev_node****.**** next = second_node first_node****.**** next = second_node****.**** next second_node****.**** next = first_node # 初始化头节点与prev_node prev_node = first_node head = first_node****.**** next return dummy****.**** next # 递归 class Solution : def swapPairs****(**** self****,**** head****:**** ListNode****)**** -> ListNode****:**** # 递归实现 if not head or not head****.**** next : return head first_node = head second_node = head****.**** next # 第二个节点的next节点作为头部传入递归函数,返回的是 # 指向第二个节点的指针 first_node****.**** next = self****.**** swapPairs****(**** second_node****.**** next ) second_node****.**** next = first_node return second_node |

反转链表

将链表进行反转

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # 迭代 class Solution : def reverseList**(** self**,** head**:** ListNode**)** -> ListNode**:** if head is None : return head pre = None cur = head while cur**:** nxt = cur**.** next cur**.** next = pre pre = cur cur = nxt return pre # 递归 class Solution : def reverseList**(** self**,** head**:** ListNode**)** -> ListNode**:** if not head or not head**.** next : return head last = self**.** reverseList**(** head**.** next ) head**.** next . next = head head**.** next = None return last |

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!
欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

相关推荐
WWZZ20251 分钟前
快速上手大模型:深度学习9(池化层、卷积神经网络1)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
Boop_wu12 分钟前
[Java EE] 多线程编程初阶
java·jvm·算法
cpp_25011 小时前
P1765 手机
数据结构·c++·算法·题解·洛谷
未到结局,焉知生死1 小时前
PAT每日三题11-20
c++·算法
Aaron15882 小时前
通用的通感控算存一体化平台设计方案
linux·人工智能·算法·fpga开发·硬件工程·射频工程·基带工程
_w_z_j_2 小时前
拼三角(枚举)
算法
hweiyu002 小时前
数据结构和算法分类
数据结构·算法·分类
M K Q2 小时前
2025.9 GESP三级 日历制作
算法
x***J3482 小时前
算法竞赛训练方法
算法
前端小L2 小时前
图论专题(十六):“依赖”的死结——用拓扑排序攻克「课程表」
数据结构·算法·深度优先·图论·宽度优先