js一刷自解哈希表
javascript
var removeNthFromEnd = function(head, n) {
let idx=new Map();
let cur=head;
while(cur){
idx.set(cur,1);
cur=cur.next;
}
let keys=[...idx.keys()];
let temp=keys[keys.length-n];
if(keys.length-n===0){
return temp.next;
}
let prev=keys[keys.length-n-1];
prev.next=temp.next;
return head;
};
js一刷 (哨兵+双指针)
javascript
var removeNthFromEnd = function(head, n) {
let dummy=new ListNode(0,head);
let left=dummy;
let right=dummy;
while(n){
right=right.next;
n--;
}
while(right.next){
left=left.next;
right=right.next;
}
let temp=left.next;
left.next=temp.next;
return dummy.next;
};
哨兵dummy的用法:
有删除头结点的操作的时,用哨兵
当头结点为空,可能返回空结点时,用哨兵