首页 > 其他 > 详细

LeetCode Reverse Linked List

时间:2016-01-29 12:26:17      阅读:179      评论:0      收藏:0      [点我收藏+]

LeetCode解题之Reverse Linked List


原题

翻转一个单向链表。

注意点:

例子:

输入: 1->2->3

输出: 3->2->1

解题思路

非常基础的一道题。前后两个指针,把后指针指向的节点的next指向前节点,在此之前用一个临时变量存储后指针原来的后一个节点以保证能够不断更新前后指针的位置。最后不要忘记把原先的头节点的next置为空,因为它现在是最后一个节点。

AC源码

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

    def to_list(self):
        return [self.val] + self.next.to_list() if self.next else [self.val]


class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if not head:
            return None
        prev = head
        curr = prev.next
        while curr:
            next = curr.next
            curr.next = prev
            prev = curr
            curr = next
        head.next = None
        return prev


if __name__ == "__main__":
    n1 = ListNode(1)
    n2 = ListNode(2)
    n3 = ListNode(3)
    n1.next = n2
    n2.next = n3
    r = Solution().reverseList(n1)
    assert r.to_list() == [3, 2, 1]

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

LeetCode Reverse Linked List

原文:http://blog.csdn.net/u013291394/article/details/50605007

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!