• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
不会投篮的邢
投篮三不沾
博客园    首页    新随笔    联系   管理    订阅  订阅

55. 跳跃游戏(贪心)

55. 跳跃游戏

难度中等

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

 

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

 

提示:

  • 1 <= nums.length <= 3 * 104
  • 0 <= nums[i] <= 105
  • public class leetcode_55 {
        public static void main(String[] args) {
            int nums[] = {3,2,1,0,4};
            boolean flag = canJump(nums);
            System.out.println(flag);
        }
    
        public static boolean canJump(int[] nums) {
            int maxIndex = 0;
            int i = 0;
            for (; i <= maxIndex; i++) {
                maxIndex = Math.max(i + nums[i], maxIndex);
                if (maxIndex >= nums.length - 1)
                    return true;
            }
            return false;
        }
    }

    思路:使用maxIndex标记能够到达的最大位置,使用一次循环从0到maxIndex, 如果i+nums[i]>maxIndex则更新最大位置下标。

posted @ 2021-10-06 15:23  不会投篮的邢  阅读(38)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3