@@ -169,18 +169,17 @@ function jump(nums: number[]): number {
169
169
``` rust
170
170
impl Solution {
171
171
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 ;
181
180
}
182
181
}
183
- dp [ n - 1 ]
182
+ ans
184
183
}
185
184
}
186
185
```
@@ -206,19 +205,18 @@ public class Solution {
206
205
#### C
207
206
208
207
``` c
209
- #define min (a, b ) a < b ? a : b
210
208
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 ;
219
217
}
220
218
}
221
- return dp [ numsSize - 1 ] ;
219
+ return ans ;
222
220
}
223
221
```
224
222
@@ -227,23 +225,23 @@ int jump(int* nums, int numsSize) {
227
225
```php
228
226
class Solution {
229
227
/**
230
- * @param integer [] $nums
231
- * @return integer
228
+ * @param Integer [] $nums
229
+ * @return Integer
232
230
*/
233
-
234
231
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;
243
241
}
244
242
}
245
243
246
- return $steps ;
244
+ return $ans ;
247
245
}
248
246
}
249
247
```
0 commit comments