Leetcode 19. 删除链表的倒数第 N 个结点 JavaScript (Day 11)

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的用法:
有删除头结点的操作的时,用哨兵
当头结点为空,可能返回空结点时,用哨兵

相关推荐
前端小L17 小时前
双指针专题(九):谁是窗口里的老大?——「滑动窗口最大值」
javascript·算法·双指针与滑动窗口
该换个名儿了17 小时前
Vue3中,我的Watch为什么总监听不到数据?
前端·javascript·vue.js
坚持学习前端日记17 小时前
桌面端与移动端JS桥技术对比及跨平台实现
开发语言·javascript·harmonyos
ahhdfjfdf17 小时前
前端实现带滚动区域的 DOM 长截图导出
前端·javascript·react.js
八哥程序员18 小时前
javascript 为什么会有闭包这么个烧脑的东西
前端·javascript
方也_arkling18 小时前
【八股】JS中的事件循环
开发语言·前端·javascript·ecmascript
坚持学习前端日记18 小时前
原生Android开发与JS桥开发对比分析
android·开发语言·javascript
颜酱18 小时前
从经典问题入手,吃透动态规划核心(DP五部曲实战)
前端·javascript·算法
多米Domi01119 小时前
0x3f 第20天 三更24-32 hot100子串
java·python·算法·leetcode·动态规划