【路飞】一套思路解决所有链表交换的题目

122 阅读1分钟

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

题目:交换链表中的节点

image.png

分析

  1. 创建一个数组,将链表节点放入数组中
  2. 通过索引,将数组中的节点交换 注意:
  3. k是从1开始的,所以引用值为k-1;
  4. 数组添加不要用push,push的性能会比较差;
var swapNodes = function (head, k) {
  let arr = [];
  let i = 0;
  for (let k = head; k != null; k = k.next) {
    arr[i++] = k;
  }
  const rest = arr.length - k;
  let temp = arr[rest].val;
  arr[rest].val = arr[k - 1].val;
  arr[k - 1].val = temp;
  return head;
};

总结

通过数组的方式存储节点,可以解决所有关于链表交换的问题。