FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
leetcode/problems/src/array/ChampagneTower.java at master · KindleBooks66/leetcode · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
KindleBooks66
/
leetcode
Public
forked from
gouthampradhan/leetcode
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
leetcode
/
problems
/
src
/
array
/
ChampagneTower.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
69 lines (67 loc) · 2.92 KB
Breadcrumbs
leetcode
/
problems
/
src
/
array
/
ChampagneTower.java
Copy path
File metadata and controls
69 lines (67 loc) · 2.92 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package
array
;
/**
* Created by gouthamvidyapradhan on 28/03/2019 We stack glasses in a pyramid, where the first row
* has 1 glass, the second row has 2 glasses, and so on until the 100th row. Each glass holds one
* cup (250ml) of champagne.
*
* <p>Then, some champagne is poured in the first glass at the top. When the top most glass is full,
* any excess liquid poured will fall equally to the glass immediately to the left and right of it.
* When those glasses become full, any excess champagne will fall equally to the left and right of
* those glasses, and so on. (A glass at the bottom row has it's excess champagne fall on the
* floor.)
*
* <p>For example, after one cup of champagne is poured, the top most glass is full. After two cups
* of champagne are poured, the two glasses on the second row are half full. After three cups of
* champagne are poured, those two cups become full - there are 3 full glasses total now. After four
* cups of champagne are poured, the third row has the middle glass half full, and the two outside
* glasses are a quarter full, as pictured below.
*
* <p>Now after pouring some non-negative integer cups of champagne, return how full the j-th glass
* in the i-th row is (both i and j are 0 indexed.)
*
* <p>Example 1: Input: poured = 1, query_glass = 1, query_row = 1 Output: 0.0 Explanation: We
* poured 1 cup of champange to the top glass of the tower (which is indexed as (0, 0)). There will
* be no excess liquid so all the glasses under the top glass will remain empty.
*
* <p>Example 2: Input: poured = 2, query_glass = 1, query_row = 1 Output: 0.5 Explanation: We
* poured 2 cups of champange to the top glass of the tower (which is indexed as (0, 0)). There is
* one cup of excess liquid. The glass indexed as (1, 0) and the glass indexed as (1, 1) will share
* the excess liquid equally, and each will get half cup of champange.
*
* <p>Note:
*
* <p>poured will be in the range of [0, 10 ^ 9]. query_glass and query_row will be in the range of
* [0, 99].
*
* <p>Solution: Calculate for every glass and for each row at a time. Use the value from the
* previous row to calculate the current value.
*
* @see PascalsTriangle
*/
public
class
ChampagneTower
{
/**
* Main method
*
* @param args
*/
public
static
void
main
(
String
[]
args
) {
System
.
out
.
println
(
new
ChampagneTower
().
champagneTower
(
4
,
2
,
1
));
}
public
double
champagneTower
(
int
poured
,
int
query_row
,
int
query_glass
) {
double
[][]
A
=
new
double
[
query_row
+
1
][
query_row
+
1
];
A
[
0
][
0
] =
poured
;
for
(
int
i
=
1
;
i
<=
query_row
;
i
++) {
for
(
int
j
=
0
;
j
<=
query_row
;
j
++) {
if
(
A
[
i
-
1
][
j
] >
1.0
) {
A
[
i
][
j
] += (
A
[
i
-
1
][
j
] -
1.0
) /
2
;
}
if
(
j
==
0
)
continue
;
if
(
A
[
i
-
1
][
j
-
1
] >
1.0
) {
A
[
i
][
j
] += (
A
[
i
-
1
][
j
-
1
] -
1.0
) /
2
;
}
}
}
if
(
A
[
query_row
][
query_glass
] >
1.0
)
return
1
;
else
return
A
[
query_row
][
query_glass
];
}
}
Back
|
FazBrowse Home
|
New Git URL