24.两两交换链表中的节点
这道题是leecode hot100的第24题
难度: 中等
题目: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
思路分析: 维持一个前置节点prev, 通过交换它后面两个节点来实现
题解语言: js
题解
var swapPairs = function(head) {
const dummy = new ListNode(-1);
dummy.next = head;
let prev = dummy;
while(prev.next !== null && prev.next.next !== null){
let fast = prev.next.next;
let slow = prev.next;
slow.next = fast.next;
fast.next = slow;
prev.next = fast;
prev = slow;
}
return dummy.next;
};
两两交换必须 3 个指针:
-
prev:当前要交换的两个节点前面的节点
-
a:第一个节点
-
b:第二个节点