您的位置:首页 > 其它

Jump gameII

2015-07-01 09:00 351 查看
leetcode jump gameII

看了题解,用BFS是比较好的思路,一层表示当前步能到的节点,curmax表示最远的,和贪心有异曲同工之妙

class Solution {
public:
    int jump(vector<int>& a) {
        int n=a.size();
        if(n<=1) return 0;
        int i=0, level=0, curmax=0, nextmax=0;
        while(i<=n-1){
            for(;i<=curmax && i<=n-1;i++){
                nextmax=max(nextmax, a[i]+i);
                if(nextmax>=n-1) return level+1;
            }
            curmax=nextmax;
            level++;
        }
        return -1;
    }
};


之前写的dp,TLE了,当DP思维训练了
class Solution {
public:
    int jump(vector<int>& a) {
        int n=a.size();
        if(n<=1) return 0;
        int dp
;
        dp[0]=0;
        for(int i=1;i<n;i++){
            dp[i]=INT_MAX;
            for(int j=0;j<i;j++){
                if(a[j]>=i-j)dp[i]=min(dp[i], dp[j]+1);
            }
        }
        return dp[n-1];
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: