C++ 贪心算法 跳跃游戏_最少跳跃次数

一个数组存储了非负整型数据,数组中的第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

发布了61 篇原创文章 · 获赞 47 · 访问量 1604

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/104570778
今日推荐