给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。力扣原文链接
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
两两交换链表中的节点,其实可以用k-个一组翻转链表->reverseKGroup(head,2)。
但是两两交换使用reverseKGroup 代码量过大,所以可以从新写一个
var swapPairs = function(head) {
if(!head||!head.next)return null
let emptyNode=new ListNode(0,head)
let pre=emptyNode,cur=pre.next
while(cur.next){
let next=cur.next
cur.next=next.next
pre.next=next
next.next=cur
// 因为两两交换,
// cur是每次交换的第一个节点,
// pre是第一个节点的上一个基点
pre=cur
cur=cur.next
}
return emptyNode.next
};