Skip to content

Commit 36ad330

Browse files
committed
feat: add Rust solution for lc No.3660
1 parent 857b1a4 commit 36ad330

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

solution/3600-3699/3660.Jump Game IX/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,35 @@ function maxValue(nums: number[]): number[] {
209209
}
210210
```
211211

212+
#### Rust
213+
214+
```rust
215+
impl Solution {
216+
pub fn max_value(nums: Vec<i32>) -> Vec<i32> {
217+
let n = nums.len();
218+
let mut ans = vec![0; n];
219+
let mut pre_max = vec![nums[0]; n];
220+
221+
for i in 1..n {
222+
pre_max[i] = pre_max[i - 1].max(nums[i]);
223+
}
224+
225+
let mut suf_min = i32::MAX;
226+
227+
for i in (0..n).rev() {
228+
ans[i] = if i == n - 1 || pre_max[i] <= suf_min {
229+
pre_max[i]
230+
} else {
231+
ans[i + 1]
232+
};
233+
suf_min = suf_min.min(nums[i]);
234+
}
235+
236+
ans
237+
}
238+
}
239+
```
240+
212241
<!-- tabs:end -->
213242

214243
<!-- solution:end -->

solution/3600-3699/3660.Jump Game IX/README_EN.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,35 @@ function maxValue(nums: number[]): number[] {
206206
}
207207
```
208208

209+
#### Rust
210+
211+
```rust
212+
impl Solution {
213+
pub fn max_value(nums: Vec<i32>) -> Vec<i32> {
214+
let n = nums.len();
215+
let mut ans = vec![0; n];
216+
let mut pre_max = vec![nums[0]; n];
217+
218+
for i in 1..n {
219+
pre_max[i] = pre_max[i - 1].max(nums[i]);
220+
}
221+
222+
let mut suf_min = i32::MAX;
223+
224+
for i in (0..n).rev() {
225+
ans[i] = if i == n - 1 || pre_max[i] <= suf_min {
226+
pre_max[i]
227+
} else {
228+
ans[i + 1]
229+
};
230+
suf_min = suf_min.min(nums[i]);
231+
}
232+
233+
ans
234+
}
235+
}
236+
```
237+
209238
<!-- tabs:end -->
210239

211240
<!-- solution:end -->
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
impl Solution {
2+
pub fn max_value(nums: Vec<i32>) -> Vec<i32> {
3+
let n = nums.len();
4+
let mut ans = vec![0; n];
5+
let mut pre_max = vec![nums[0]; n];
6+
7+
for i in 1..n {
8+
pre_max[i] = pre_max[i - 1].max(nums[i]);
9+
}
10+
11+
let mut suf_min = i32::MAX;
12+
13+
for i in (0..n).rev() {
14+
ans[i] = if i == n - 1 || pre_max[i] <= suf_min {
15+
pre_max[i]
16+
} else {
17+
ans[i + 1]
18+
};
19+
suf_min = suf_min.min(nums[i]);
20+
}
21+
22+
ans
23+
}
24+
}

0 commit comments

Comments
 (0)