当前位置:   article > 正文

刷题day58:跳跃游戏II_给定一个长度为n的0索引整数数组ums。初始位置为nums[0]。 每个元素nums]表示

给定一个长度为n的0索引整数数组ums。初始位置为nums[0]。 每个元素nums]表示

题意描述:

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

0 <= j <= nums[i] 
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

 本题与跳跃游戏类似思路,只不过需要找到最小的跳跃步数。移动下标只要遇到当前覆盖最远距离的下标,直接步数加一,不考虑是不是终点的情况。只要让移动下标,最大只能移动到nums.size() - 2的地方就可以了。

完整C++代码如下:

  1. class Solution {
  2. public:
  3. int jump(vector<int>& nums) {
  4. int end1 = 0;
  5. int result = 0;
  6. int end2 = 0;
  7. for(int i = 0; i < nums.size() - 1; i++){
  8. end2 = max(nums[i] + i, end2);
  9. if(end1 == i){
  10. end1 = end2;
  11. result++;
  12. }
  13. }
  14. return result;
  15. }
  16. };

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号