您的位置:首页 > 其它

LeetCode "Jump Game II"

2014-08-01 12:07 351 查看
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: