Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9716c9c

Browse files
feat: add rust solution to lc problem: No.135 (doocs#4456)
No.0135.Candy
1 parent befa1c5 commit 9716c9c

File tree

4 files changed

+83
-111
lines changed

4 files changed

+83
-111
lines changed

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

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff 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 -->

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

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff 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 -->
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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+
}

‎solution/0100-0199/0135.Candy/Solution2.java‎

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /