Skip to content

Commit 722e62d

Browse files
authored
feat: update solutions to lc problem: No.0045 (#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

+30-32
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

+30-32
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
```
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 (int i = 0; i < numsSize - 1; i++) {
9-
for (int j = 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+
int last = 0;
5+
for (int i = 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+
}
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
}
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)