讨论/技术交流/使用js刷题中的提示开启es6特性和使用priority-queue/
使用js刷题中的提示开启es6特性和使用priority-queue

使用javascript刷题,提示中说

“您的代码在执行时将带上 --harmony 标记来开启 新版ES6特性。
lodash.js 库已经默认被包含。
如需使用队列/优先队列,您可使用 datastructures-js/priority-queue 和 datastructures-js/queue。”,

那么
--harmony 标记来开启,是怎么操作呢?
priority-queue这个又是怎么使用呢?
image.png


评论解释说--harmony是在node环境中添加了这个变量,使得我们的js刷题环境能够支持es6。感谢@sh-winter解惑。


然后priority-queue也是可以直接在js刷题环境中使用的。非常感谢@zuncheng解惑。

这里我对js使用自带优先队列,稍做总结。

  1. 实例化时回调为空,加入元素时必须指定优先级
let a=1,b=2,c=5;
let p=new MinPriorityQueue();
p.enqueue(a,a);//传入的第二个值表示的是指定当前元素的优先级,
p.enqueue(b,b);//即使是纯数字也必须指定该数字的优先级,不能省略。
//这里priority-queue官方解释的是leetcode使用的是老版本的PriorityQueue库,
//不支持数字默认为优先级,所以不能省略。

console.log(p.dequeue().element);//打印出队元素
console.log(p.front().element);//打印队首元素
  1. 实例化时在priority的回调函数中指定哪个属性值作为优先级。加入元素不用指定优先级。
const p= new MinPriorityQueue({
	priority: (item) => item.age  //指定传入值的某个属性作为优先级,该值需要返回Number型
})
	
let a ={name:"zhangsan",age:13};
let b ={name:"lisi",age:23};

p.enqueue(a);//实例化时有回调函数,这里就不用再指定优先级
p.enqueue(b);
console.log(p.toArray())

优先队列更多的使用特性可以参考priority-queue

👴佛了,这几天才因为 js pq 的缺失换成了 py 刷题

展开全部 12 讨论