- 两两交换链表中的节点
- 其实和交换两相邻的数字方法无二,只不过要多记录两个节点 以及上下节点的位置关系。【画个图会方便捋清楚】
问题描述
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
1
2
|
输入:head = [1,2,3,4]
输出:[2,1,4,3]
|
-示例 3:
提示
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# @lc code=start
# 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]:
h1 = ListNode(next=head)
h = h1
while h.next !=None and h.next.next!=None:
p = h.next // 记录临时节点
q = h.next.next.next // 记录临时节点
h.next = h.next.next
h.next.next = p
h.next.next.next= q
h = h.next.next
return h1.next
|