Skip to content

Commit 3804b36

Browse files
committed
Create heap.js
1 parent f18fe4e commit 3804b36

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

basics/heap.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
class PriorityQueue {
2+
constructor() {
3+
this.items = [];
4+
}
5+
6+
enqueue(item) {
7+
for(let i = 0; i < this.items.length; i++) {
8+
if(this.items[i] < item) {
9+
this.items.splice(i, 0, item);
10+
return;
11+
}
12+
}
13+
14+
this.items.push(item);
15+
}
16+
17+
dequeue() {
18+
return this.items.pop();
19+
}
20+
21+
peek() {
22+
console.log(this.items);
23+
}
24+
25+
print() {
26+
console.log(this.items);
27+
}
28+
29+
length() {
30+
return this.items.length;
31+
}
32+
}
33+
34+
const findKthLargestNum = (nums,k) => {
35+
const queue = new PriorityQueue();
36+
nums.forEach(num => {
37+
if(queue.length() < k) {
38+
queue.enqueue(num);
39+
return;
40+
}
41+
42+
queue.enqueue(num);
43+
queue.dequeue();
44+
});
45+
queue.peek();
46+
return queue.dequeue();
47+
}
48+
49+
const nums = [6,3,7,4];
50+
findKthLargestNum(nums,2);

0 commit comments

Comments
 (0)