LeetCode-19-删除链表中的倒数第N个结点

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起。

题目地址

题目

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。

示例 1:

image.png

1
2
输入: head = [1,2,3,4,5], n = 2
输出: [1,2,3,5]

示例 2:

1
2
输入: head = [1], n = 1
输出: []

示例 3:

1
2
输入: head = [1,2], n = 1
输出: [1]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

解题思路

  • 定义两个指针,快指针比慢指针快n
  • 当快指针到达尾结点时,慢指针刚好到达要删除的结点
  • 将慢指针的下个节点指向要删除节点的后置节点便可完成删除

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
var removeNthFromEnd = function(head, n) {
let vnode = new ListNode(-1,head)
let slow = vnode
let fast = vnode
while(n--) fast =fast.next
if(!fast) return vnode.next
while(fast.next){
fast=fast.next
slow= slow.next
}
slow.next = slow.next.next
return vnode.next
};
文章作者: Joker
文章链接: https://qytayh.github.io/2021/12/LeetCode-19-%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E7%BB%93%E7%82%B9/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog