Skip to content

Commit ce7bcd1

Browse files
committed
Runtime: 65 ms (Top 67.95%) | Memory: 48.40 MB (Top 39.74%)
1 parent 4eba9bb commit ce7bcd1

File tree

1 file changed

+21
-35
lines changed

1 file changed

+21
-35
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,26 @@
1+
// Runtime: 65 ms (Top 67.95%) | Memory: 48.40 MB (Top 39.74%)
2+
3+
/**
4+
* @param {number} poured
5+
* @param {number} query_row
6+
* @param {number} query_glass
7+
* @return {number}
8+
*/
19
var champagneTower = function(poured, query_row, query_glass) {
2-
3-
let water = [poured];
4-
let hasOverflow = true;
5-
let row = 0;
10+
let glassLevels = Array(100).fill(0.0);
11+
glassLevels[0] = poured;
612

7-
while(true){
8-
9-
if (! hasOverflow) return 0 // We haven't reached query_row yet, and water ran out
10-
hasOverflow = false;
11-
12-
let rowGlass = Array(water.length).fill(0); // List of glasses at current row
13-
for (let i = 0; i < rowGlass.length; i++){
14-
let input = water[i];
15-
if (input <= 1){
16-
rowGlass[i] = input;
17-
water[i] = 0
18-
}else{
19-
rowGlass[i] = 1;
20-
water[i]--
21-
}
22-
if (row == query_row && i == query_glass){ // Return if we reach goal before water run out
23-
return rowGlass[i]
24-
}
25-
}
26-
// console.log('row,rowGlass',row,rowGlass); // to debug
27-
28-
let nextWater = Array(water.length + 1).fill(0); // water poured towards next row,
29-
for (let i = 0; i < rowGlass.length; i++){
30-
let overflow = water[i];
31-
32-
if (overflow > 0) hasOverflow = true;
33-
34-
nextWater[i] += overflow / 2;
35-
nextWater[i+1] += overflow / 2;
13+
for (let curRow = 0; curRow < query_row; curRow++) {
14+
let nextLevels = Array(100).fill(0.0);
15+
16+
for (let curGlass = 0; curGlass <= curRow; curGlass++) {
17+
let overflow = Math.max(0, (glassLevels[curGlass] - 1.0) / 2.0);
18+
nextLevels[curGlass] += overflow;
19+
nextLevels[curGlass + 1] += overflow;
3620
}
37-
water = nextWater;
38-
row ++;
21+
22+
glassLevels = nextLevels;
3923
}
24+
25+
return Math.min(1.0, glassLevels[query_glass]);
4026
};

0 commit comments

Comments
 (0)