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

面试时如何在Coderpad中导入npm优先级队列库?

在Coderpad与HackerRank中使用优先队列的解决方案

Coderpad 安装依赖步骤

  • 打开Coderpad会话,找到界面底部或右侧的终端入口
  • 在终端执行安装命令:npm install @datastructures-js/priority-queue
  • 安装完成后,在代码中引入并使用:
    const { MinPriorityQueue } = require('@datastructures-js/priority-queue');
    const heap = new MinPriorityQueue();
    
  • 注意:临时面试会话可能需要每次重新安装,建议提前和面试官确认是否可以预安装依赖

HackerRank 替代方案

HackerRank面试环境通常不支持自定义npm包安装,推荐两种可行方式:

  • 手动实现最小堆(功能与MinPriorityQueue对齐):
    class MinHeap {
      constructor() {
        this.heap = [];
      }
    
      push(value) {
        this.heap.push(value);
        this.#bubbleUp(this.heap.length - 1);
      }
    
      pop() {
        const min = this.heap[0];
        const last = this.heap.pop();
        if (this.heap.length > 0) {
          this.heap[0] = last;
          this.#sinkDown(0);
        }
        return min;
      }
    
      peek() {
        return this.heap[0];
      }
    
      size() {
        return this.heap.length;
      }
    
      #bubbleUp(index) {
        const value = this.heap[index];
        while (index > 0) {
          const parentIndex = Math.floor((index - 1) / 2);
          const parent = this.heap[parentIndex];
          if (value >= parent) break;
          this.heap[index] = parent;
          this.heap[parentIndex] = value;
          index = parentIndex;
        }
      }
    
      #sinkDown(index) {
        const length = this.heap.length;
        const value = this.heap[index];
        while (true) {
          let leftChildIndex = 2 * index + 1;
          let rightChildIndex = 2 * index + 2;
          let swapIndex = null;
    
          if (leftChildIndex < length) {
            const leftChild = this.heap[leftChildIndex];
            if (leftChild < value) {
              swapIndex = leftChildIndex;
            }
          }
    
          if (rightChildIndex < length) {
            const rightChild = this.heap[rightChildIndex];
            if (
              (swapIndex === null && rightChild < value) ||
              (swapIndex !== null && rightChild < this.heap[swapIndex])
            ) {
              swapIndex = rightChildIndex;
            }
          }
    
          if (swapIndex === null) break;
          this.heap[index] = this.heap[swapIndex];
          this.heap[swapIndex] = value;
          index = swapIndex;
        }
      }
    }
    
    // 使用示例
    const heap = new MinHeap();
    heap.push(5);
    heap.push(2);
    heap.push(7);
    console.log(heap.pop()); // 输出2
    
  • 提前和面试官沟通,说明你在Leetcode中使用的包,询问是否可以使用平台内置的类似功能,或者允许用手动实现的堆替代

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:05:18