一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个位置最多向前跳跃a[i]步;已知数组各元素的情况下,确认可以从第0位置跳跃到数组最后一个位置,求最少需要跳跃几次?
#include<vector>
class Solution
{
public:
Solution(){}
~Solution(){}
int jump(std::vector<int>& nums)
{
if (nums.size() < 2) {
return 0;
}
unsigned int current_max_index = nums[0];
unsigned int pre_max_index = nums[0];
int jump_min = 1;
for (unsigned int i = 0; i < nums.size(); i++)
{
if (i>current_max_index)
{
jump_min++;
current_max_index = pre_max_index;
}
if (pre_max_index<nums[i]+i)
{
pre_max_index = nums[i] + i;
}
}
return jump_min;
}
};
int main()
{
std::vector<int> nums;
nums.push_back(2);
nums.push_back(3);
nums.push_back(1);
nums.push_back(1);
nums.push_back(4);
Solution solve;
printf("%d\n", solve.jump(nums));
return 0;
}
运行结果:
2