【经典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:阿旭算法与机器学习,共同学习交流~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!