leetcode_206. 反转链表

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

反转一个单链表。

示例:

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

二、解题思路

每次记录原始节点的next节点,然后将原始节点新的下一个节点(一开始为Null)进行连接,之后新的下一个节点变为原始节点原始节点变为原始节点的next的节点,再重复这样的操作,直到原始节点为Null停止循环

三、代码

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

    def __repr__(self):
        return str(self.val)

class Solution:
    def reverseList(self, head: ListNode):
        # null     1 --> 2 --> 3 --> 4 --> null
        # null <-- 1 <-- 2 <-- 3 <-- 4     null
        if not head:
            return None
        cur, cur_new_next = head, None
        while cur:
            # save original next node
            origin_next = cur.next
            # link new next node
            cur.next = cur_new_next
            # current node turns to new next node
            cur_new_next = cur
            # original next node turns to current node
            cur = origin_next
        return cur_new_next

if __name__ == '__main__':
    head = ListNode(1)
    head.next = ListNode(2)
    head.next.next = ListNode(3)
    head.next.next.next = ListNode(4)

    s = Solution()
    ans = s.reverseList(head)
    print(ans)
悲恋花丶无心之人 CSDN认证博客专家 深度学习 神经网络 Pytorch
计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
个人GitHub网址为:https://github.com/nickhuang1996
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值