Skip to content

Commit 4078710

Browse files
authored
feat: add java solution to lc problem: No.0135 (#1617)
No.0135.Candy
1 parent c5f9d8d commit 4078710

File tree

3 files changed

+80
-17
lines changed

3 files changed

+80
-17
lines changed

solution/0100-0199/0135.Candy/README.md

+30
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,36 @@ class Solution {
111111
}
112112
```
113113

114+
```java
115+
class Solution {
116+
public int candy(int[] ratings) {
117+
int n = ratings.length;
118+
int up = 0;
119+
int down = 0;
120+
int peak = 0;
121+
int candies = 1;
122+
for (int i = 1; i < n; i++) {
123+
if (ratings[i - 1] < ratings[i]) {
124+
up++;
125+
peak = up + 1;
126+
down = 0;
127+
candies += peak;
128+
} else if (ratings[i] == ratings[i - 1]) {
129+
peak = 0;
130+
up = 0;
131+
down = 0;
132+
candies++;
133+
} else {
134+
down++;
135+
up = 0;
136+
candies += down + (peak > down ? 0 : 1);
137+
}
138+
}
139+
return candies;
140+
}
141+
}
142+
```
143+
114144
### **C++**
115145

116146
```cpp

solution/0100-0199/0135.Candy/README_EN.md

+30
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,36 @@ class Solution {
102102
}
103103
```
104104

105+
```java
106+
class Solution {
107+
public int candy(int[] ratings) {
108+
int n = ratings.length;
109+
int up = 0;
110+
int down = 0;
111+
int peak = 0;
112+
int candies = 1;
113+
for (int i = 1; i < n; i++) {
114+
if (ratings[i - 1] < ratings[i]) {
115+
up++;
116+
peak = up + 1;
117+
down = 0;
118+
candies += peak;
119+
} else if (ratings[i] == ratings[i - 1]) {
120+
peak = 0;
121+
up = 0;
122+
down = 0;
123+
candies++;
124+
} else {
125+
down++;
126+
up = 0;
127+
candies += down + (peak > down ? 0 : 1);
128+
}
129+
}
130+
return candies;
131+
}
132+
}
133+
```
134+
105135
### **C++**
106136

107137
```cpp
+20-17
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
class Solution {
22
public int candy(int[] ratings) {
33
int n = ratings.length;
4-
int[] left = new int[n];
5-
int[] right = new int[n];
6-
Arrays.fill(left, 1);
7-
Arrays.fill(right, 1);
8-
for (int i = 1; i < n; ++i) {
9-
if (ratings[i] > ratings[i - 1]) {
10-
left[i] = left[i - 1] + 1;
4+
int up = 0;
5+
int down = 0;
6+
int peak = 0;
7+
int candies = 1;
8+
for (int i = 1; i < n; i++) {
9+
if (ratings[i - 1] < ratings[i]) {
10+
up++;
11+
peak = up + 1;
12+
down = 0;
13+
candies += peak;
14+
} else if (ratings[i] == ratings[i - 1]) {
15+
peak = 0;
16+
up = 0;
17+
down = 0;
18+
candies++;
19+
} else {
20+
down++;
21+
up = 0;
22+
candies += down + (peak > down ? 0 : 1);
1123
}
1224
}
13-
for (int i = n - 2; i >= 0; --i) {
14-
if (ratings[i] > ratings[i + 1]) {
15-
right[i] = right[i + 1] + 1;
16-
}
17-
}
18-
int ans = 0;
19-
for (int i = 0; i < n; ++i) {
20-
ans += Math.max(left[i], right[i]);
21-
}
22-
return ans;
25+
return candies;
2326
}
2427
}

0 commit comments

Comments
 (0)