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 722e62d

Browse files
feat: update solutions to lc problem: No.0045 (doocs#3999)
No.0045.Jump Game II
1 parent a84c906 commit 722e62d

File tree

5 files changed

+91
-98
lines changed

5 files changed

+91
-98
lines changed

‎solution/0000-0099/0045.Jump Game II/README.md‎

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,17 @@ function jump(nums: number[]): number {
169169
```rust
170170
impl Solution {
171171
pub fn jump(nums: Vec<i32>) -> i32 {
172-
let n = nums.len();
173-
let mut dp = vec![i32::MAX; n];
174-
dp[0] = 0;
175-
for i in 0..n - 1 {
176-
for j in 1..=nums[i] as usize {
177-
if i + j >= n {
178-
break;
179-
}
180-
dp[i + j] = dp[i + j].min(dp[i] + 1);
172+
let mut ans = 0;
173+
let mut mx = 0;
174+
let mut last = 0;
175+
for i in 0..(nums.len() - 1) {
176+
mx = mx.max(i as i32 + nums[i]);
177+
if last == i as i32 {
178+
ans += 1;
179+
last = mx;
181180
}
182181
}
183-
dp[n-1]
182+
ans
184183
}
185184
}
186185
```
@@ -206,19 +205,18 @@ public class Solution {
206205
#### C
207206

208207
```c
209-
#define min(a, b) a < b ? a : b
210208
int jump(int* nums, int numsSize) {
211-
int dp[numsSize];
212-
for (int i = 0; i < numsSize; i++) {
213-
dp[i] = numsSize;
214-
}
215-
dp[0] = 0;
216-
for (int i = 0; i < numsSize - 1; i++) {
217-
for (int j = i + 1; j < (min(i + nums[i] + 1, numsSize)); j++) {
218-
dp[j] = min(dp[j], dp[i] + 1);
209+
int ans = 0;
210+
int mx = 0;
211+
int last = 0;
212+
for (int i = 0; i < numsSize - 1; ++i) {
213+
mx = (mx > i + nums[i]) ? mx : (i + nums[i]);
214+
if (last == i) {
215+
++ans;
216+
last = mx;
219217
}
220218
}
221-
return dp[numsSize - 1];
219+
return ans;
222220
}
223221
```
224222
@@ -227,23 +225,23 @@ int jump(int* nums, int numsSize) {
227225
```php
228226
class Solution {
229227
/**
230-
* @param integer[] $nums
231-
* @return integer
228+
* @param Integer[] $nums
229+
* @return Integer
232230
*/
233-
234231
function jump($nums) {
235-
$maxReach = 0;
236-
$steps = 0;
237-
$lastJump = 0;
238-
for ($i = 0; $i <= count($nums) - 2; $i++) {
239-
$maxReach = max($maxReach, $i + $nums[$i]);
240-
if ($i == $lastJump) {
241-
$lastJump = $maxReach;
242-
$steps++;
232+
$ans = 0;
233+
$mx = 0;
234+
$last = 0;
235+
236+
for ($i = 0; $i < count($nums) - 1; $i++) {
237+
$mx = max($mx, $i + $nums[$i]);
238+
if ($last == $i) {
239+
$ans++;
240+
$last = $mx;
243241
}
244242
}
245243
246-
return $steps;
244+
return $ans;
247245
}
248246
}
249247
```

‎solution/0000-0099/0045.Jump Game II/README_EN.md‎

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,17 @@ function jump(nums: number[]): number {
166166
```rust
167167
impl Solution {
168168
pub fn jump(nums: Vec<i32>) -> i32 {
169-
let n = nums.len();
170-
let mut dp = vec![i32::MAX; n];
171-
dp[0] = 0;
172-
for i in 0..n - 1 {
173-
for j in 1..=nums[i] as usize {
174-
if i + j >= n {
175-
break;
176-
}
177-
dp[i + j] = dp[i + j].min(dp[i] + 1);
169+
let mut ans = 0;
170+
let mut mx = 0;
171+
let mut last = 0;
172+
for i in 0..(nums.len() - 1) {
173+
mx = mx.max(i as i32 + nums[i]);
174+
if last == i as i32 {
175+
ans += 1;
176+
last = mx;
178177
}
179178
}
180-
dp[n-1]
179+
ans
181180
}
182181
}
183182
```
@@ -203,19 +202,18 @@ public class Solution {
203202
#### C
204203

205204
```c
206-
#define min(a, b) a < b ? a : b
207205
int jump(int* nums, int numsSize) {
208-
int dp[numsSize];
209-
for (int i = 0; i < numsSize; i++) {
210-
dp[i] = numsSize;
211-
}
212-
dp[0] = 0;
213-
for (int i = 0; i < numsSize - 1; i++) {
214-
for (int j = i + 1; j < (min(i + nums[i] + 1, numsSize)); j++) {
215-
dp[j] = min(dp[j], dp[i] + 1);
206+
int ans = 0;
207+
int mx = 0;
208+
int last = 0;
209+
for (int i = 0; i < numsSize - 1; ++i) {
210+
mx = (mx > i + nums[i]) ? mx : (i + nums[i]);
211+
if (last == i) {
212+
++ans;
213+
last = mx;
216214
}
217215
}
218-
return dp[numsSize - 1];
216+
return ans;
219217
}
220218
```
221219
@@ -224,23 +222,23 @@ int jump(int* nums, int numsSize) {
224222
```php
225223
class Solution {
226224
/**
227-
* @param integer[] $nums
228-
* @return integer
225+
* @param Integer[] $nums
226+
* @return Integer
229227
*/
230-
231228
function jump($nums) {
232-
$maxReach = 0;
233-
$steps = 0;
234-
$lastJump = 0;
235-
for ($i = 0; $i <= count($nums) - 2; $i++) {
236-
$maxReach = max($maxReach, $i + $nums[$i]);
237-
if ($i == $lastJump) {
238-
$lastJump = $maxReach;
239-
$steps++;
229+
$ans = 0;
230+
$mx = 0;
231+
$last = 0;
232+
233+
for ($i = 0; $i < count($nums) - 1; $i++) {
234+
$mx = max($mx, $i + $nums[$i]);
235+
if ($last == $i) {
236+
$ans++;
237+
$last = $mx;
240238
}
241239
}
242240
243-
return $steps;
241+
return $ans;
244242
}
245243
}
246244
```
Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
#define min(a, b) a < b ? a : b
21
int jump(int* nums, int numsSize) {
3-
int dp[numsSize];
4-
for (int i = 0;i<numsSize; i++) {
5-
dp[i] =numsSize;
6-
}
7-
dp[0] =0;
8-
for (inti=0; i<numsSize-1; i++) {
9-
for (intj=i+1; j< (min(i+nums[i] +1, numsSize)); j++) {
10-
dp[j] = min(dp[j], dp[i] +1);
2+
int ans=0;
3+
int mx = 0;
4+
intlast=0;
5+
for (inti=0; i<numsSize-1; ++i) {
6+
mx= (mx>i+nums[i]) ? mx : (i+nums[i]);
7+
if (last==i) {
8+
++ans;
9+
last = mx;
1110
}
1211
}
13-
return dp[numsSize-1];
14-
}
12+
return ans;
13+
}
Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
<?php
21
class Solution {
32
/**
4-
* @param integer[] $nums
5-
* @return integer
3+
* @param Integer[] $nums
4+
* @return Integer
65
*/
7-
86
function jump($nums) {
9-
$maxReach = 0;
10-
$steps = 0;
11-
$lastJump = 0;
12-
for ($i = 0; $i <= count($nums) - 2; $i++) {
13-
$maxReach = max($maxReach, $i + $nums[$i]);
14-
if ($i == $lastJump) {
15-
$lastJump = $maxReach;
16-
$steps++;
7+
$ans = 0;
8+
$mx = 0;
9+
$last = 0;
10+
11+
for ($i = 0; $i < count($nums) - 1; $i++) {
12+
$mx = max($mx, $i + $nums[$i]);
13+
if ($last == $i) {
14+
$ans++;
15+
$last = $mx;
1716
}
1817
}
1918

20-
return $steps;
19+
return $ans;
2120
}
2221
}
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
impl Solution {
22
pub fn jump(nums: Vec<i32>) -> i32 {
3-
let n = nums.len();
4-
let mut dp = vec![i32::MAX; n];
5-
dp[0] = 0;
6-
for i in 0..n - 1 {
7-
for j in 1..=nums[i] as usize {
8-
if i + j >= n {
9-
break;
10-
}
11-
dp[i + j] = dp[i + j].min(dp[i] + 1);
3+
let mut ans = 0;
4+
let mut mx = 0;
5+
let mut last = 0;
6+
for i in 0..(nums.len() - 1) {
7+
mx = mx.max(i as i32 + nums[i]);
8+
if last == i as i32 {
9+
ans += 1;
10+
last = mx;
1211
}
1312
}
14-
dp[n - 1]
13+
ans
1514
}
1615
}

0 commit comments

Comments
(0)

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