#include <stdbool.h>
bool canJump(int *nums, int numsSize) {
int mx = 0;
for (int i = 0; i < numsSize; i++) {
if (i > mx)
return false;
if (i + nums[i] > mx)
mx = i + nums[i];
if (mx >= numsSize - 1)
return true;
}
return false;
}
#include <algorithm>
#include <vector>
using namespace std;
class Solution {
public:
bool canJump(vector<int> &nums) {
int mx = 0;
for (int i = 0; i < nums.size(); i++) {
if (i > mx)
return false;
int j = i + nums[i];
mx = max(mx, j);
if (mx >= (int)nums.size() - 1)
return true;
}
return false;
}
};
package greedy
func canJump(nums []int) bool {
mx := 0
for i, n := range nums {
if i > mx {
return false
}
mx = max(mx, i+n)
if mx >= len(nums)-1 {
return true
}
}
return false
}
class Solution {
public boolean canJump(int[] nums) {
int mx = 0;
for (int i = 0; i < nums.length; i++) {
if (i > mx)
return false;
mx = Math.max(mx, i + nums[i]);
if (mx >= nums.length - 1)
return true;
}
return false;
}
}
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function (nums) {
let mx = 0;
for (let i = 0; i < nums.length; i++) {
if (i > mx) return false;
mx = Math.max(mx, i + nums[i]);
if (mx >= nums.length - 1) return true;
}
return false;
};
from typing import List
class Solution:
def canJump(self, nums: List[int]) -> bool:
mx = 0
for i, n in enumerate(nums):
if i > mx:
return False
mx = max(mx, i + n)
if mx >= len(nums) - 1:
return True
return False
impl Solution {
pub fn can_jump(nums: Vec<i32>) -> bool {
let mut mx = 0;
for (i, &n) in nums.iter().enumerate() {
if i > mx {
return false;
}
mx = mx.max(i + n as usize);
if mx >= nums.len() - 1 {
return true;
}
}
false
}
}