Leecode45.跳跃游戏II
主要思路:要想跳跃次数最少,就需要我们每次跳跃距离尽可能大
正向查找有可能i+nums[i]所在位置数组值为0,我们需要进一步判断;
为了把问题简化我们直接反向查找;
pos为我们想要到达的位置;
我们只需要从左往右遍历(遍历i到pos之间的元素)
第一个满足i+nums[i]>=pos,跳跃的距离是最远的;
再把pos移动到i所在位置,直至pos==0;
则说明数组遍历完毕;
int jump(int* nums, int numsSize){
int pos=numsSize-1;//需要到达的位置
int i,count=0;//count用来计数算加了多少次
while(pos>0)
{
for(i=0;i<pos;i++)
{
if(i+nums[i]>=pos)//找出离pos最远且能够到达pos的位置
{
pos=i;
count++;
break;
}
}
}
return count;
}