206. 反转链表

Q:

反转一个单链表。

示例:

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

A:

迭代就不说了,保存当前节点的前继节点循环改变指针指向就行。
我自己先写了个递归的,但看了题解的递归,一比就比下去了。。

我写的递归:

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        def func(node):
            if not node:
                return
            nonlocal head
            node_nex=node.next
            node.next=head
            head=node
            func(node_nex)
        if not head:
            return
        x=head.next
        head.next=None
        func(x)
        return head

看题解写的递归:

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        def func(node):
            if not node.next:
                return node
            p=func(node.next)
            node.next.next=node
            node.next=None
            return p
        return func(head)
posted @ 2019-08-17 21:10  NeoZy  阅读(86)  评论(0编辑  收藏  举报