首页 > 其他 > 详细

LeetCode "Jump Game II"

时间:2014-08-01 13:32:21      阅读:421      评论:0      收藏:0      [点我收藏+]

Greedy, Greedy, Greedy.. It is all about maximum interval update.

One trick is, we start looping over each element from the one nearest to end to farthest one - because the nearer the index is, more hopeful it could finish earlier. With this optimization, I got it passed with only 24ms.

class Solution {
public:
    
    int jump(int A[], int n) {
        if (n <= 1) return 0;
        int last = 0, inx = 0;
        int cnt = 0;
        while (inx < n)
        {
            int newMaxInx = 0;
            int tmp_i = inx + 1;
            while (tmp_i--)
            {
                if (tmp_i < last) break;
                newMaxInx = std::max(newMaxInx, A[tmp_i] + tmp_i);
                if (newMaxInx >= n - 1) return cnt + 1;
            }
            last = inx;
            inx = newMaxInx;
            cnt++;
        }
        return cnt;
    }
};

 

LeetCode "Jump Game II",布布扣,bubuko.com

LeetCode "Jump Game II"

原文:http://www.cnblogs.com/tonix/p/3884666.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!