leetcode Jump Game

来源:互联网 发布:淘宝卖食品需要什么证 编辑:程序博客网 时间:2024/05/29 02:52

题目链接

这个题目很明显的就能想到一个动态规划的算法

public class Solution {    public boolean canJump(int[] nums) {        boolean[] record=new boolean[nums.length];        record[0]=true;        for(int i=0;i<nums.length;i++)        {            for(int j=0;j<i;j++)            {                if(record[j]&&j+nums[j]>=i)                {                    record[i]=true;                    break;                }            }        }        return record[record.length-1];    }}

不过提交上系统会有超时。。。
这个题目有一个贪心的解法。。算法在下面

int reach=nums.length-1;        for(int i=nums.length-1;i>=0;i--)        {            if(nums[i]+i>=reach)            {                reach=i;            }        }        return reach==0;

reach是我们维护的可以达到的一个点。而在这个点之后的所有点我们都可以达到。成立的原因就是。数组中存的是最多可以走多少步,若不是必须走多少步。这就可以用贪心来解。

0 0
原创粉丝点击