【经典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:阿旭算法与机器学习,共同学习交流~

相关推荐
嘉陵妹妹1 小时前
深度优先算法学习
学习·算法·深度优先
GalaxyPokemon2 小时前
LeetCode - 53. 最大子数组和
算法·leetcode·职场和发展
小猫咪怎么会有坏心思呢2 小时前
华为OD机考 - 水仙花数 Ⅰ(2025B卷 100分)
数据结构·链表·华为od
hn小菜鸡2 小时前
LeetCode 1356.根据数字二进制下1的数目排序
数据结构·算法·leetcode
zhuiQiuMX2 小时前
分享今天做的力扣SQL题
sql·算法·leetcode
music&movie4 小时前
算法工程师认知水平要求总结
人工智能·算法
laocui14 小时前
Σ∆ 数字滤波
人工智能·算法
yzx9910135 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
全栈凯哥5 小时前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
全栈凯哥5 小时前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表