原題
給一個(gè)鏈表,兩兩交換其中的節(jié)點(diǎn)宗苍,然后返回交換后的鏈表赚窃。
樣例
給出 1->2->3->4, 你應(yīng)該返回的鏈表是 2->1->4->3。
解題思路
- 由于第一個(gè)節(jié)點(diǎn)要參與調(diào)換 => Dummy node幫忙
- 快慢指針抖单,外加一個(gè)temp指針萎攒,倒來倒去。特別注意while循環(huán)的結(jié)束條件矛绘,不清楚可以用幾個(gè)小的特殊的例子跑一下耍休。
完整代碼
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head == None or head.next == None:
return head
Dummy = ListNode(0)
Dummy.next = head
slow, fast = Dummy, Dummy.next
while fast != None and fast.next != None:
temp = fast.next.next
slow.next = fast.next
fast.next.next = fast
fast.next = temp
slow = fast
fast = fast.next
return Dummy.next