剑指 Offer 24. 反转链表

简介: 剑指 Offer 24. 反转链表

链接: 原文链接.


# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
class Solution:
    # 这个题不会,参考大佬写法
    # 双指针,修改每个节点的指针指向。
    def reverseList(self, head: ListNode) -> ListNode:
        # 
        cur, pre = head, None
        # 当cur为空时,则表明已经遍历到了末尾
        # 而他的前一个节点pre值为5,指向的是4,结果返回pre即可。
        while cur:
            # 大概思路就是
            # 先用tmp来暂存cur的下一个节点
            tmp = cur.next
            # 之后就是修改cur的next指向,首次循环要指向为空
            cur.next = pre
            # 下一步是把cur赋值给pre,pre要当作cur的前一个结点
            pre = cur
            # 最后一步就是把tmp赋给cur,cur现在代表的是第二个节点
            cur = tmp
        return pre


ps:看题的时候脑子有些不太清楚,画了一个图。第一次循环是红色的部分,第二次是紫色的部分。f99cf01f4be94a37bcb7c13ce230dad0.png


相关文章
|
3月前
《剑指offer》——合并两个排序的链表
《剑指offer》——合并两个排序的链表
|
3月前
剑指 Offer 35:复杂链表的复制
剑指 Offer 35:复杂链表的复制
31 0
|
14天前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
32 5
|
14天前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
26 4
|
3月前
|
Java C语言
剑指offer(牛客)——合并两个排序的链表
剑指offer(牛客)——合并两个排序的链表
25 1
|
3月前
|
存储 Java C语言
剑指offer(牛客)——从尾到头打印链表
剑指offer(牛客)——从尾到头打印链表
27 1
|
3月前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
3月前
【一刷《剑指Offer》】面试题 16:反转链表
【一刷《剑指Offer》】面试题 16:反转链表
|
3月前
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
|
3月前
|
机器学习/深度学习
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点