@@ -169,18 +169,17 @@ function jump(nums: number[]): number {
169169``` rust
170170impl 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
210208int 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
228226class 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```
0 commit comments