不管全世界所有人怎么说,我都认为自己的感受才是正确的。无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢的怎么也长久不了。
LeetCode:原题地址
题目要求
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入: head = [1,2,3,4]
输出: [2,1,4,3]
示例 2:
输入: head = []
输出: []
示例 3:
输入: head = [1]
输出: [1]
提示:
- 链表中节点的数目在范围
[0, 100]内 0 <= Node.val <= 100
思路
迭代法创建交换结点
代码
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function(head) {
//创建一个哑结点dummy
const dummy = new ListNode(0,head);
let temp = dummy;
while(temp.next && temp.next.next){
const node1 = temp.next;//两个结点中的第一个结点
const node2 = temp.next.next;//两个结点中的第二个结点
temp.next = node2;//将temp.next指向node2
node1.next = node2.next;//将node1.next指向node2的下一个结点node3
node2.next = node1;//将node2.next指向node1
temp = node1;
}
return dummy.next;
};