您的位置:首页 > 其它

lintcode-跳跃游戏II-117

2015-09-20 22:52 399 查看
给出一个非负整数数组,你最初定位在数组的第一个位置。



数组中的每个元素代表你在那个位置可以跳跃的最大长度。   

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

样例

给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)

class Solution {
public:

int jump(vector<int> A) {
int n;
if(0==(n=A.size()))
return 0;
int steps
;    //记录到达该点时所需要的最小步数 [0...i...n]
steps[0]=0;

for (int i = 1; i<n; i++) {      //当到达下标为i的点时
for (int j = 0; j<i; j++) {
if (j+A[j] >= i) {      //走到下标为j的点时若能跳跃到下标为i点
steps[i] = steps[j] + 1; //更新步数
break;                   //不必往后继续循环的原因是越靠近起点的点(j越接近0)
}                            //必然步数越少,因为往后的步数更新都是基于前面的点
}                                //这么想:不论怎样走,走到第5格需要的步数肯定少于走到第10格
}

return steps[n-1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: