將鏈表中相鄰的兩個節點交換位置,注意第一個節點與第二個節點要交換位置,而第二個節點不用與第三個節點交換位置。
注意點:
不允許修改節點的值 只能用常量的額外空間例子:
輸入: head = 1->2->3->4
輸出: 2->1->4->3
比較常見的鏈表操作。下面看一下典型情況,如要交換鏈表中A->B->C->D中的B和C需要做如下操作:
將A指向C 將B指向D 將C指向B在頭節點之前加一個假節點就可以使所有的交換都符合上面的情況。
# 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
"""
prev = ListNode(-1)
prev.next = head
temp = prev
while temp.next and temp.next.next:
node1 = temp.next
node2 = temp.next.next
temp.next = node2
node1.next = node2.next
node2.next = node1
temp = temp.next.next
return prev.next
歡迎查看我的Github來獲得相關源碼。