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 previf __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]
欢迎查看我的 () 来获得相关源代码。