题目地址:链接
思路:
- 三个指针,p 指向当前节点上一个节点,q节点指向当前节点,o节点指向当前节点下一个节点。
- p.next 指向 o
- q.next 指向 o.next
- o.next 指向 q
- 下一个循环前,让整体的位置相对于初始向右平移三格
- 根据 o 是否为 null 判断循环结束
/**
* 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) {
if(!head) return head;
const dummy = new ListNode(0, head);
let [p, q, o] = [dummy, head, head.next];
while(o) {
p.next = o;
q.next = o.next;
o.next = q;
p = q;
q = p.next ?? null;
o = p.next ? (q.next ?? null): null;
}
return dummy.next;
};
8万+

被折叠的 条评论
为什么被折叠?



