JS算法题之删除链表的倒数第N个节点
题目描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
说明:
给定的 n 保证是有效的。
示例
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.解答
这题不难,可以直接遍历一次,获取链表的长度,然后再次遍历到对应的节点,直接删除
也可以遍历一次,让单向链表成为双向链表,然后直接删除也可,本文采取第二种做法
var removeNthFromEnd = function(head, n) {
let cur = head;
while(cur.next){
cur.next.prev = cur;
cur = cur.next;
}
if(n == 1){
// 删除最后一个节点
if(!cur.prev){
return null;
}
else{
cur.prev.next = null;
return head;
}
}
while(n > 0 && cur){
if(n == 1){
if(!cur.prev){
// 删除第一个节点
cur.next.prev = null;
return cur.next
}
else{
cur.prev.next = cur.next;
cur.next.prev = cur.prev;
return head;
}
}
cur = cur.prev;
n--;
}
};本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!