• 055 Jump Game 跳跃游戏


    给定一个非负整数数组,您最初位于数组的第一个索引处。
    数组中的每个元素表示您在该位置的最大跳跃长度。
    确定是否能够到达最后一个索引。
    示例:
    A = [2,3,1,1,4],返回 true。
    A = [3,2,1,0,4],返回 false。
    详见:https://leetcode.com/problems/jump-game/description/

    Java实现:

    方法一:

    class Solution {
        public boolean canJump(int[] nums) {
            int n=nums.length;
            // maxJump是维护的当前能跳到的最大位置
            int maxJump=0;
            for(int i=0;i<n;++i){
            	// i>maxJump表示无法到达i的位置,失败
    			// maxJump >= (n - 1),此时的距离已经足够到达终点,成功
                if(i>maxJump||maxJump>=(n-1)){
                    break;
                }
                // nums[i]+i当前跳最远距离 maxJump为i之前跳最远距离
                maxJump=maxJump>(i+nums[i])?maxJump:(i+nums[i]);
            }
            return maxJump>=(n-1);
        }
    }
    

    方法二:

    class Solution {
        public boolean canJump(int[] nums) {
            int n=nums.length;
            // dp[i]表示当前跳跃的最大距离
            int[] dp=new int[n];
            dp[0]=nums[0];
            // i表示当前距离,也是下标
            for(int i=1;i<n;++i){
            	// i点可达
                if(i<=dp[i-1]){
                    dp[i]=dp[i-1]>(nums[i]+i)?dp[i-1]:(nums[i]+i);
                }else{
                    dp[i]=dp[i-1];
                }
            }
            return dp[n-1]>=(n-1);
        }
    }
    

    参考:https://blog.csdn.net/mine_song/article/details/69791029

  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8698237.html
Copyright © 2020-2023  润新知