24. 两两交换链表中的节点
2020-06-30 本文已影响0人
周英杰Anita
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
思路--迭代
初始化一个哑结点,指向头结点
初始化一个preNode,用以表示置换节点的前一个节点
遍历链表节点:
从head和head.next节点开始执行交换,交换过程如下图所示
交换后,重置head 和 prev_node用以下次继续交换
image.png
python3解法--迭代
# 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:return None
newNode = ListNode(-1)
newNode.next = head
preNode = newNode
while head and head.next:
# 要交换的节点
firstNode = head
secondNode = head.next
# 交换
preNode.next = secondNode
firstNode.next = secondNode.next
secondNode.next = firstNode
# 重置head 和 prev_node用以下次继续交换
preNode = firstNode
head = firstNode.next
return newNode.next
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。