Given a linked list, swap every two adjacent nodes and return its head.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
.
Note:
- Your algorithm should use only constant extra space.
- You may not modify the values in the list's nodes, only nodes itself may be changed.
思路:有点绕的时候,画个图就好喽
# 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
"""
res = pre = ListNode(0)
pre.next = head
while pre.next and pre.next.next:
a = pre.next
b = pre.next.next
pre.next, b.next, a.next = b, a, b.next
pre = a
return res.next