zoukankan      html  css  js  c++  java
  • LeetCode Reverse Linked List

    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) 来获得相关源代码。

  • 相关阅读:
    .NET 4.0 中的契约式编程
    DELL安装Windows Server 2019
    Mysql 5.7.34免安装版本
    MQTT
    WPF属性
    WPF数据绑定
    git系列之(五)git stash 命令
    Vue.js
    git 对比两个分支差异
    TPL 之二 TransformBlock
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7007312.html
Copyright © 2011-2022 走看看