题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:

输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:

输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
提示:
- 链表中节点的数目范围是
[0, 5000] -5000 <= Node.val <= 5000
思路
双指针迭代法
curr指向当前处理的节点
pre指向前一个节点
在改变指针的方向时,主要是找不到下一个位置,所以在遍历的过程中,用next_temp变量存下一个节点的位置
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
pre = None # 从第一个节点开始,前一个节点为空
curr = head
while curr: # 只要当前还有节点没有处理,就继续
next_temp = curr.next # 改变指针方向前先存一下后一个节点,防止改变方向了找不到
curr.next = pre # 改变当前指针的方向
pre = curr # 继续下一个节点
curr = next_temp
return pre # 当curr为None才退出循环,因此转换后的链表的头结点是pre
501

被折叠的 条评论
为什么被折叠?



