55. Jump game

#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
    }
}