一、题目
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
二、示例
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
输入:head = [1], n = 1
输出:[]
输入:head = [1,2], n = 1
输出:[1]
三、思路 首先我们应该先遍历得到链表的长度,本题中让我们删除倒数第N个节点,可以根据其查找到属于正数的哪个节点。 此时可以分为两种情况,一种是删除的节点为第一个节点 ,此时应该直接将head = head.next ,然后直接返回head 。 另一种情况是:我们删除的节点不是第一个节点 ,此时应该使用while 循环,找到删除节点的上一个节点,让其指向删除节点的下一个节点即可。 四、代码展示
var removeNthFromEnd = function(head, n) {
let len1 = 0
let p1 = head
let p2 = head
while(p1) {
p1 = p1.next
len1++
}
let curIndex = len1 - n + 1
len1 = 2
if(curIndex === 1) {
head = head.next
}else {
while(p2 && p2.next) {
if(len1 === curIndex) {
p2.next = p2.next.next
}else {
p2 = p2.next
}
len1++
}
}
return head
};
五、总结
|