File tree Expand file tree Collapse file tree 4 files changed +83
-111
lines changed
solution/0100-0199/0135.Candy Expand file tree Collapse file tree 4 files changed +83
-111
lines changed Original file line number Diff line number Diff line change @@ -203,6 +203,35 @@ function candy(ratings: number[]): number {
203
203
}
204
204
```
205
205
206
+ #### Rust
207
+
208
+ ```rust
209
+ impl Solution {
210
+ pub fn candy(ratings: Vec<i32>) -> i32 {
211
+ let n = ratings.len();
212
+ let mut left = vec![1; n];
213
+ let mut right = vec![1; n];
214
+
215
+ for i in 1..n {
216
+ if ratings[i] > ratings[i - 1] {
217
+ left[i] = left[i - 1] + 1;
218
+ }
219
+ }
220
+
221
+ for i in (0..n - 1).rev() {
222
+ if ratings[i] > ratings[i + 1] {
223
+ right[i] = right[i + 1] + 1;
224
+ }
225
+ }
226
+
227
+ ratings.iter()
228
+ .enumerate()
229
+ .map(|(i, _)| left[i].max(right[i]) as i32)
230
+ .sum()
231
+ }
232
+ }
233
+ ```
234
+
206
235
#### C#
207
236
208
237
```cs
@@ -236,46 +265,4 @@ public class Solution {
236
265
237
266
<!-- solution:end -->
238
267
239
- <!-- solution:start -->
240
-
241
- ### 方法二
242
-
243
- <!-- tabs:start -->
244
-
245
- #### Java
246
-
247
- ```java
248
- class Solution {
249
- public int candy(int[] ratings) {
250
- int n = ratings.length;
251
- int up = 0;
252
- int down = 0;
253
- int peak = 0;
254
- int candies = 1;
255
- for (int i = 1; i < n; i++) {
256
- if (ratings[i - 1] < ratings[i]) {
257
- up++;
258
- peak = up + 1;
259
- down = 0;
260
- candies += peak;
261
- } else if (ratings[i] == ratings[i - 1]) {
262
- peak = 0;
263
- up = 0;
264
- down = 0;
265
- candies++;
266
- } else {
267
- down++;
268
- up = 0;
269
- candies += down + (peak > down ? 0 : 1);
270
- }
271
- }
272
- return candies;
273
- }
274
- }
275
- ```
276
-
277
- <!-- tabs:end -->
278
-
279
- <!-- solution:end -->
280
-
281
268
<!-- problem:end -->
Original file line number Diff line number Diff line change @@ -202,6 +202,35 @@ function candy(ratings: number[]): number {
202
202
}
203
203
```
204
204
205
+ #### Rust
206
+
207
+ ```rust
208
+ impl Solution {
209
+ pub fn candy(ratings: Vec<i32>) -> i32 {
210
+ let n = ratings.len();
211
+ let mut left = vec![1; n];
212
+ let mut right = vec![1; n];
213
+
214
+ for i in 1..n {
215
+ if ratings[i] > ratings[i - 1] {
216
+ left[i] = left[i - 1] + 1;
217
+ }
218
+ }
219
+
220
+ for i in (0..n - 1).rev() {
221
+ if ratings[i] > ratings[i + 1] {
222
+ right[i] = right[i + 1] + 1;
223
+ }
224
+ }
225
+
226
+ ratings.iter()
227
+ .enumerate()
228
+ .map(|(i, _)| left[i].max(right[i]) as i32)
229
+ .sum()
230
+ }
231
+ }
232
+ ```
233
+
205
234
#### C#
206
235
207
236
```cs
@@ -235,46 +264,4 @@ public class Solution {
235
264
236
265
<!-- solution:end -->
237
266
238
- <!-- solution:start -->
239
-
240
- ### Solution 2
241
-
242
- <!-- tabs:start -->
243
-
244
- #### Java
245
-
246
- ```java
247
- class Solution {
248
- public int candy(int[] ratings) {
249
- int n = ratings.length;
250
- int up = 0;
251
- int down = 0;
252
- int peak = 0;
253
- int candies = 1;
254
- for (int i = 1; i < n; i++) {
255
- if (ratings[i - 1] < ratings[i]) {
256
- up++;
257
- peak = up + 1;
258
- down = 0;
259
- candies += peak;
260
- } else if (ratings[i] == ratings[i - 1]) {
261
- peak = 0;
262
- up = 0;
263
- down = 0;
264
- candies++;
265
- } else {
266
- down++;
267
- up = 0;
268
- candies += down + (peak > down ? 0 : 1);
269
- }
270
- }
271
- return candies;
272
- }
273
- }
274
- ```
275
-
276
- <!-- tabs:end -->
277
-
278
- <!-- solution:end -->
279
-
280
267
<!-- problem:end -->
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn candy(ratings: Vec<i32>) -> i32 {
3
+ let n = ratings.len();
4
+ let mut left = vec![1; n];
5
+ let mut right = vec![1; n];
6
+
7
+ for i in 1..n {
8
+ if ratings[i] > ratings[i - 1] {
9
+ left[i] = left[i - 1] + 1;
10
+ }
11
+ }
12
+
13
+ for i in (0..n - 1).rev() {
14
+ if ratings[i] > ratings[i + 1] {
15
+ right[i] = right[i + 1] + 1;
16
+ }
17
+ }
18
+
19
+ ratings
20
+ .iter()
21
+ .enumerate()
22
+ .map(|(i, _)| left[i].max(right[i]) as i32)
23
+ .sum()
24
+ }
25
+ }
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments