LeetCode 206. 反转链表 Reverse Linked List

简介: LeetCode 206. 反转链表 Reverse Linked List

LeetCode 206. 反转链表 Reverse Linked List


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 恰好是原链表的最后一个节点,返回即可。

相关文章
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
241 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
存储 算法
全方位带你高效刷力扣 | 反转链表
迭代,重复某一过程,每一次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直至到达最终状态
169 0
leetcode:206. 反转链表
leetcode:206. 反转链表
162 0
|
Java
力扣经典150题第六十题:反转链表 II
力扣经典150题第六十题:反转链表 II
235 1
|
SQL 算法 数据可视化
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
339 1
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
195 1
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】