题目描述
方法;
1. 迭代 pre->head->ne
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
pre= dump = ListNode(0)
pre.next = head
ne = head.next
while ne:
tmp = ne.next
ne.next = head
head.next = tmp
pre.next = ne
ne = head.next
pre =pre.next
if ne:
ne = ne.next
head = head.next
pre= pre.next
return dump.next
时间复杂度:O(n),空间复杂度:O(1)
2. 递归
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
newHead = head.next
head.next = self.swapPairs(newHead.next)
newHead.next = head
return newHead
时间复杂度:O(n),空间复杂度:O(n)