leetcode

中等链表双指针

方法1 三指针

  1. var removeNthFromEnd = function (head, n) {
  2. let p1 = p2 = p3 = new ListNode(-1, head), len = 0;
  3. while (p1 = p1.next) len++;
  4. let target = len - n + 1;
  5. // console.log('链表长度:', len, '需要删除的目标元素是第几个元素:', target);
  6. while (--target) p2 = p2.next;
  7. p2.next = p2.next.next;
  8. return p3.next;
  9. };

19. 删除链表的倒数第 N 个结点 - 图1

image.png

⚠️ 注意返回值,若直接返回 head,会存在很多问题。

方法2