js一刷自解哈希表
varremoveNthFromEnd=function(head,n){letidx=newMap();letcur=head;while(cur){idx.set(cur,1);cur=cur.next;}letkeys=[...idx.keys()];lettemp=keys[keys.length-n];if(keys.length-n===0){returntemp.next;}letprev=keys[keys.length-n-1];prev.next=temp.next;returnhead;};js一刷 (哨兵+双指针)
varremoveNthFromEnd=function(head,n){letdummy=newListNode(0,head);letleft=dummy;letright=dummy;while(n){right=right.next;n--;}while(right.next){left=left.next;right=right.next;}lettemp=left.next;left.next=temp.next;returndummy.next;};哨兵dummy的用法:
有删除头结点的操作的时,用哨兵
当头结点为空,可能返回空结点时,用哨兵