You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Node.js运行LeetCode代码报MaxPriorityQueue未定义咨询

本地运行LeetCode优先队列相关代码报错原因

核心原因

  • LeetCode的JavaScript判题运行环境提前全局注入了第三方优先队列实现,MaxPriorityQueue、MinPriorityQueue都是注入的全局构造函数,不需要用户手动引入、手动实现,所以相同代码在平台内可以正常运行。
  • 你本地安装的原生Node.js是标准运行环境,既没有内置这个优先队列类,也没有做对应的全局注入,全局作用域下找不到MaxPriorityQueue的定义,自然会抛出引用错误。
  • 你查官方文档找不到对应说明是正常的:MaxPriorityQueue从来不是JavaScript标准库的内容,不属于ECMAScript规范定义的内置对象,只是LeetCode平台额外加的解题便利工具。

本地运行的两种可行方案

  • 方案一:手动实现最大优先队列类,不依赖任何第三方库。这也是算法练习场景下最通用的方案,写完类定义之后再写解题逻辑,在任何支持JavaScript的环境都能跑。
  • 方案二:本地安装对应依赖包,手动引入后使用,和LeetCode环境的API保持完全一致:
    1. 进入你的项目目录,执行安装命令:
    npm install @datastructures-js/priority-queue
    
    1. 在代码头部加一行引入语句,再写原有解题逻辑即可:
    const { MaxPriorityQueue } = require('@datastructures-js/priority-queue')
    
    var lastStoneWeight = function(stones) {
        const m = new MaxPriorityQueue()
        for(const w of stones) m.enqueue(w)
        
        while(m.size() > 1){
            const diff = m.dequeue().element - m.dequeue().element
            if(diff > 0) m.enqueue(diff)
        }
     
        return m.size() === 0 ? 0 : m.front().element
    };
    

注意:不止JavaScript环境,LeetCode给所有支持的编程语言都预置了不少解题常用的工具类、第三方库,这些内容都不属于对应语言的标准库,把平台上能跑的代码直接拿到本地运行前,要先确认有没有依赖平台预置的非标准内容。

内容的提问来源于stack exchange,提问作者Mossy82

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:00:53