题目描述:
给定一个链表,删除链表的倒数第n个节点并返回链表的头指针。
例如:
给出的链表为:1->2->3->4->5, n= 2.
删除了链表的倒数第n个节点之后,链表变为1->2->3->5.
备注:
题目保证n一定是有效的
请给出请给出时间复杂度为 O(n)的算法
实例
输入:
{1,2},2
输出:
{2}
解题思路
- 要想删除链表的倒数第N个节点,需要遍历链表得出长度。
- 然后将第length-n的下一个节点指向下下个节点即可。
我的解法
function removeNthFromEnd( head , n ) {
// write code here
let cur = head, len = 0;
while(cur!=null) {
cur = cur.next;
++len;
}
if (len == n){
return head.next;
}
cur = head;
let temp = len - n;
while(temp>1) {
cur = cur.next
temp--;
}
cur.next=cur.next.next;
return head;
}