zoukankan      html  css  js  c++  java
  • [LeetCode系列] 跳跃问题II

    给定一系列非负整数, 每个值代表从此下标可以向前跳跃的最远距离, 试求出跳跃到数组尾端需要的最少步骤.

    如给定 [2,3,1,1,4], 返回2. (从下标0跳到1, 从1跳到下标4).

    算法描述: 贪心算法, 从头开始遍历数组, 记录通过ret+1步能够到达的最远下标为curr, 记录通过ret步能够到达的最远下标为last, 当遍历到的下标i大于上一次能够到达的最远下标last时, 更新last为curr, 并对ret加1, 数组遍历完成后返回ret.

    代码:

     1 class Solution {
     2 public:
     3     int jump(int A[], int n) {
     4         int last = 0;
     5         int curr = 0;
     6         int ret = 0;
     7         for (int i = 0; i < n; i++) {
     8             if (i > last) {
     9                 if (last == curr && last < n - 1) return -1;
    10                 last = curr;
    11                 ret++;
    12             }
    13             curr = max(curr, i + A[i]);
    14         }
    15         return ret;
    16     }
    17 };
  • 相关阅读:
    2019JAVA第三次实验报告
    第二次作业
    第一周作业
    2019年春总结
    第二周作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
  • 原文地址:https://www.cnblogs.com/lancelod/p/3972272.html
Copyright © 2011-2022 走看看