LeetCode100-206反转链表
本文基于各个大佬的文章
上点关注下点赞,明天一定更灿烂!
前言
Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导~
您的每一条评论都会让我更有学习的动力。
一、分析题目
又断更好久了,好有罪恶感,哭哭。
二、思路以及代码
这个题目看起来好简单,我这样的都能一秒出思路。不出意外一定是有反转函数的
找ai哥给我生成了注释。
class ListNode:def __init__(self, val=0, next=None):self.val = val # 节点值self.next = next # 指向下一节点的指针class Solution:def reverseList(self, head: ListNode) -> ListNode:"""递归法反转单链表参数:head: 链表的头节点返回:反转后链表的头节点"""def recur(cur, pre):"""递归函数:反转以cur为头节点的链表参数:cur: 当前处理的节点pre: 当前节点的前一个节点返回:反转后链表的头节点(即原链表的尾节点)"""if not cur:# 递归终止条件:当前节点为None# 此时pre是原链表的最后一个节点,成为新链表的头节点return pre # 递归处理下一个节点# 将当前节点的下一个节点和当前节点作为参数传入res = recur(cur.next, cur) # res始终是原链表的尾节点,即新链表的头节点# 反转当前节点的指针:让当前节点的next指向precur.next = pre # 返回反转后链表的头节点return res # 调用递归函数,初始时当前节点是head,前一个节点是Nonereturn recur(head, None)
三、本题收获
链表做的第二个题目,掌握的还是很差,小脑子老转不过来。
总结
只会打暴力,基础一团糟,明天再学吧老铁,别真学会了。