ID:24.两两交换链表中的节点

47 阅读1分钟

题目链接

思路

交换本身没有难度,注意处理三种情况:

  • 如果不是前两个节点的交换,需要将前面的节点和后面的节点连接起来
  • 当节点本身或其 next 为 null 时,交换结束
  • 当有交换发生时,头节点的位置发生了变化,需要记录新的头节点
var swapPairs = function (head) {
  let cur = head,
    prev = null;
  const newHead = head?.next ? head.next : head;
  while (cur !== null && cur.next !== null) {
    const next = cur.next;
    cur.next = cur.next.next;
    next.next = cur;
    if (prev) prev.next = next;
    prev = cur;
    cur = cur.next;
  }
  return newHead;
};