原題
翻轉(zhuǎn)一個(gè)鏈表
樣例
給出一個(gè)鏈表1->2->3->null,這個(gè)翻轉(zhuǎn)后的鏈表為3->2->1->null
解題思路
- 基礎(chǔ)鏈表問(wèn)題汰聋,同向雙指針
- temp = head.next //讓temp記住head.next指向的節(jié)點(diǎn)
- head.next = prev //剪短head與原來(lái)head.next之間的關(guān)系又憨,將head.next指向prev
- prev指向head,即向前移動(dòng)一步
- head指向temp挤茄,也是向前移動(dòng)一步
- 方法二 Recursion
完整代碼
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
# 方法一 :Non-recursion
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
while head:
temp = head.next
head.next = prev
prev = head
head = temp
return prev
# 方法二 :Recursion
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head is None or head.next is None:
return head
next = self.reverseList(head.next)
head.next.next = head
head.next = None
return next