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 {
203203}
204204```
205205
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+
206235#### C#
207236
208237``` cs
@@ -236,46 +265,4 @@ public class Solution {
236265
237266<!-- solution: end -->
238267
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-
281268<!-- problem: end -->
Original file line number Diff line number Diff line change @@ -202,6 +202,35 @@ function candy(ratings: number[]): number {
202202}
203203```
204204
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+
205234#### C#
206235
207236``` cs
@@ -235,46 +264,4 @@ public class Solution {
235264
236265<!-- solution: end -->
237266
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-
280267<!-- 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