给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路
- 设置一个哨兵节点 prev
- 设置需要交换的两个节点分别为a、b,同时设置b的下一个节点next
完整代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function(head) {
let node = new ListNode(0)
node.next = head
let prev = node
while(prev.next && prev.next.next){
let [a,b] = [prev.next,prev.next.next];
[prev.next,b.next,a.next,prev] = [b,a,b.next,a]
}
return node.next
};
性能
时间复杂度:
空间复杂度: