题目描述
解题思路
贪心解法
从起点开始找到他能到达的点中,可以跳的最远的点。举个例子,起点是sx,可以到达位置s1, s2,其中s1可以跳step1,s2可以跳step2,那么取s1+step1,s2+step2中的最大值,代表可以下一跳可以到达的最远的地方。依次贪心,保证最后结果最优。
代码实现
class Solution {
public:
int jump(
vector<int>& nums) {
int n = nums.size();
if(n ==
1)
return 0;
int l = nums[
0];
int start =
0;
int sum =
1;
int Max =
0;
while(l < n-
1)
{
for(
int i = start+
1; i <= l && i < n; i++)
{
if(nums[i]+i > Max)
{
Max = nums[i]+i;
start = i;
}
}
l = Max;
sum++;
}
return sum;
}
};