LeetCode Reverse Linked List
Posted gavinfish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) 来获得相关源码。
以上是关于LeetCode Reverse Linked List的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 206. Reverse Linked List
Leetcode92. Reverse Linked List II && 206. Reverse Linked List
LeetCode 92. Reverse Linked List II