Skip to content

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

题解

16940802530111694080252275.png

js
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var swapPairs = function (head) {
  const node = new ListNode(-1, head);
  const ret = node;
  let temp = node;
  // 保证后面有两个节点能进行交换
  while (temp.next && temp.next.next) {
    // 第一个节点
    let pre = temp.next;
    // 第二个节点
    let cur = temp.next.next;

    // 第一个节点 连接 第三个节点
    pre.next = cur.next;
    // 第二个节点连接 第一个节点
    cur.next = pre;
    // 开始节点 连接 第二个节点
    temp.next = cur;

    // 指针移动
    temp = pre;
  }
  return ret.next;
};
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var swapPairs = function (head) {
  const node = new ListNode(-1, head);
  const ret = node;
  let temp = node;
  // 保证后面有两个节点能进行交换
  while (temp.next && temp.next.next) {
    // 第一个节点
    let pre = temp.next;
    // 第二个节点
    let cur = temp.next.next;

    // 第一个节点 连接 第三个节点
    pre.next = cur.next;
    // 第二个节点连接 第一个节点
    cur.next = pre;
    // 开始节点 连接 第二个节点
    temp.next = cur;

    // 指针移动
    temp = pre;
  }
  return ret.next;
};