LeetCode 206. 反转链表 Reverse Linked List

本文详细解析了单链表的反转算法,包括迭代和递归两种方法,并提供了Python实现代码。通过实例演示了如何将链表1->2->3->4->5->NULL反转为5->4->3->2->1->NULL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Table of Contents

一、中文版

二、英文版

三、My answer

四、解题报告


一、中文版

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

二、英文版

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

三、My answer

# 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:
        if head == None:
            return head
        cur = head
        prev = None
        while head != None:
            temp = head.next
            head.next = prev
            prev = head
            head = temp
        return prev

四、解题报告

if head == None 可写为 if not head

先用 temp 临时节点存 head 的下一个节点,再让 head 指向 prev 实现单步翻转,否则先将 head 指向 prev,则 head 原来的下一个节点丢失,此处出现断点。

最后跳出 while 循环的条件是 head 走到最后的空节点,此时 prev 恰好是原链表的最后一个节点,返回即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值