Dinner Plate Stacks LeetCode solution in JavaScript

1
/**
2
* @param {number} capacity
3
*/
4
var DinnerPlates = function (capacity) {
5
this.capacity = capacity;
6
this.stacks = [];
7
};
8

9
/**
10
* @param {number} val
11
* @return {void}
12
*/
13
DinnerPlates.prototype.push = function (val) {
14
var needNewStack = true;
15
for (var i = 0; i < this.stacks.length; i++) {
16
if (this.stacks[i].length < this.capacity) {
17
this.stacks[i].push(val);
18
needNewStack = false;
19
break;
20
}
21
}
22

23
if (needNewStack) {
24
this.stacks.push([val]);
25
}
26
};
27

28
/**
29
* @return {number}
30
*/
31
DinnerPlates.prototype.pop = function () {
32
var val = -1;
33
for (var i = this.stacks.length - 1; i >= 0; i--) {
34
if (this.stacks[i].length > 0) {
35
val = this.stacks[i].pop();
36
break;
37
}
38
}
39
return val;
40
};
41

42
/**
43
* @param {number} index
44
* @return {number}
45
*/
46
DinnerPlates.prototype.popAtStack = function (index) {
47
// console.log(index, this.stacks, ...this.stacks[index])
48
var val = -1;
49
if (this.stacks[index] && this.stacks[index].length > 0) {
50
val = this.stacks[index].pop();
51
}
52
return val;
53
};
54

55
/**
56
* Your DinnerPlates object will be instantiated and called as such:
57
* var obj = new DinnerPlates(capacity)
58
* obj.push(val)
59
* var param_2 = obj.pop()
60
* var param_3 = obj.popAtStack(index)
61
*/

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0