您的位置:首页 > 其它

leetcode-Jump game II

2014-10-22 21:18 337 查看
Greedy

class Solution
public:
int jump(int A[], int n) {
int start = 0;
int end = 0;
int count = 0;
if (n == 1) return 0;
while (end < n)
{//贪心策略:每次都走到最远的地方。下一轮再把上一轮的end+1作为新的start。直到能覆盖A[n-1]为止。
int max = 0;
count++;
for (int i = start; i <= end; i++)
{
if (A[i] + i >= n - 1)
return count;
if (A[i] + i > max)
max = A[i] + i;//其实就是计算下一轮循环所能到达的最远的地方。
}
start = end + 1;//下一轮的start以这一轮的end再加1为起点。
end = max;//以这一轮算出的能到达的最远的地方作为下一轮循环的终点。
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: