一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置?
#include<vector>
class Solution
{
public:
Solution(){}
~Solution(){}
bool CanJump(std::vector<int>& nums)
{
std::vector<int> index;
for (unsigned int i = 0; i < nums.size(); i++)
{
index.push_back(i + nums[i]);
}
unsigned int jump = 0;
int max_index = index[0];
while (jump <index.size() && jump<=max_index)
{
if (max_index<index[jump])
{
max_index = index[jump]; //如果当前可以跳得更远,则更新max_index
}
jump++;
}
if (jump==index.size())
{
return true;
}
return false;
}
};
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.CanJump(nums));
return 0;
}
运行结果:
1