24.交换链表中的节点
给定链表,交换每两个相邻节点并返回其头部。
例:
给定1-> 2-> 3-> 4,您应该将列表返回为2-> 1-> 4-> 3。
注意:
您的算法应该只使用恒定的额外空间。
您可能无法修改列表节点中的值,只能更改节点本身。
第一种
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
node = head
while node:
if not node.next:
break
second = node.next
second.val, node.val = node.val, second.val
node = second.next
return head
第二种
def swapPairs(self, head):
pre, pre.next = self, head
while pre.next and pre.next.next:
a = pre.next
b = a.next
pre.next, b.next, a.next = b, a, b.next
pre = a
return self.next