leetcode hot100 206.反转链表 easy


在遍历的过程中,改变每个节点的 next 指针,让它指向它的前驱节点。

由于单链表没有指向前驱的指针,我们需要在遍历时手动维护一个 prev 变量。

时间复杂度:O(n)O(n)O(n)

空间复杂度:O(1)O(1)O(1)

python 复制代码
# 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]:
        
        if not head:
            return None

        pre = None   # 头节点前面的设一个空节点,先不用指向头节点,因为但反过来之后,头节点就指向none
        cur = head

        while cur:
            tmp = cur.next # 暂存后继节点 cur.next
            cur.next = pre  # 修改 next 引用指向
            pre  = cur
            cur = tmp

        return pre
相关推荐
夏鹏今天学习了吗4 小时前
【LeetCode热题100(90/100)】编辑距离
算法·leetcode·职场和发展
一分之二~6 小时前
二叉树--层序遍历(迭代和递归)
数据结构·c++·算法·leetcode
程序员-King.7 小时前
day166—递归—多边形三角剖分的最低得分(LeetCode-1039)
算法·leetcode·深度优先·动态规划·递归
夏鹏今天学习了吗7 小时前
【LeetCode热题100(94/100)】下一个排列
算法·leetcode·职场和发展
平生不喜凡桃李8 小时前
LeetCode 两数之和/三数之和
算法·leetcode·两数之和·三数之和
Remember_9938 小时前
【LeetCode精选算法】二分查找专题二
java·数据结构·算法·leetcode·哈希算法
We་ct9 小时前
LeetCode 42. 接雨水:双指针解法深度剖析与全方法汇总
前端·算法·leetcode·typescript
程序员-King.9 小时前
day165—递归—最长回文子序列(LeetCode-516)
算法·leetcode·深度优先·递归
2401_841495649 小时前
【LeetCode刷题】删除链表的倒数第N个结点
数据结构·python·算法·leetcode·链表·遍历·双指针