为了账号安全,请及时绑定邮箱和手机立即绑定

LeetCode 反转链表

标签:
Python

反转链表


题目


反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题思路


  1. 迭代。利用双指针;
  2. 定义两个指针,一个 pre 指向 None,一个 cur 指向链表头部;
  3. 遍历链表,将当前节点的 next 指针指向 pre,同时 precur 指针都往前进一位(这里注意元素保存)
  4. cur 为None,迭代完毕,pre 此时指向链表头部,返回。

代码实现


# 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:
        '''反转链表

        Args:
            head: 链表
        
        Returns:
            返回反转后的链表
        '''
        # 定义两个指针
        # pre 指向 None,cur 指向原链表头部
        pre = None
        cur = head
        # cur 为 None,迭代结束
        while cur:
            # 这里注意引用更改,节点的存储
            # 下面的代码相当于
            # 存储节点值
            # tmp = cur.next
            # 将 cur 的 next 指向 pre
            # cur.next = pre
            # 移动两个指针
            # pre = cur
            # cur = tmp
            cur.next, pre, cur = pre, cur, cur.next
        # 返回反转后的链表
        return pre

实现效果


图 1


以上就是 LeetCode 题目《反转链表》的解题过程及结果。


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消