给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路:使用递归算法:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if not head or not head.next: # 如果当前节点为空,或者当前节点没有后节点,则直接返回当前节点
return head
first = head # 对当前节点和当前节点的下一个节点进行交换
second = head.next
first.next = self.swapPairs(second.next) # 对当前节点的下下个结点使用递归
second.next = first
return second
解法思路:使用递归算法:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
dummy = ListNode(-1) # 创建新的节点,用于连接头节点
dummy.next = head
prev = dummy # 要交换的节点的上一个节点
while head and head.next:
first = head
second = head.next
first.next = second.next # 进行节点的交换
second.next = first
prev.next = second
head = first.next # 要交换的节点进行更新
prev = first # 要交换的节点的上一个节点进行更新
return dummy.next