题目描述
给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。
代码
class Solution:
"""
@param: head: a ListNode
@return: a ListNode
"""
# 法一:可以改变节点的val
def swapPairs(self, head):
p = head
while p is not None and p.next is not None:
tmp = p.val
p.val = p.next.val
p.next.val = tmp
p = p.next.next
return head
# 法二:不可改变节点的val
def swapPairs1(self, head):
HEAD = ListNode(0)
HEAD.next = head
pre = HEAD
while head and head.next:
cur = head
tmp = cur.next
head = tmp.next
pre.next = tmp
cur.next = head
tmp.next = cur
pre = cur
return HEAD.next
复杂度分析
时间复杂度 O(n) ,空间复杂度 O(1) 。