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