zoukankan      html  css  js  c++  java
  • 116. 跳跃游戏

    116. 跳跃游戏 

     

    给出一个非负整数数组,你最初定位在数组的第一个位置。   

    数组中的每个元素代表你在那个位置可以跳跃的最大长度。    

    判断你是否能到达数组的最后一个位置。

     注意事项

    这个问题有两个方法,一个是贪心和 动态规划

    贪心方法时间复杂度为O(N)

    动态规划方法的时间复杂度为为O(n^2)

    我们手动设置小型数据集,使大家可以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。

    样例

    A = [2,3,1,1,4],返回 true.

    A = [3,2,1,0,4],返回 false.

    标签 
    class Solution {
    public:
        /*
         * @param A: A list of integers
         * @return: A boolean
         */
        bool canJump(vector<int> &A) {
            // write your code here
            int size = A.size();
            if (size == 1) {
                return true;
            }
        
            int curMaxStep = A[0];
            for (int i = 1; i < size; i++) {
                if (i > curMaxStep) {
                    return false;
                }
                curMaxStep = max(i + A[i], curMaxStep);
                if (curMaxStep >= size - 1) {
                    return true;
                }
            }
            return curMaxStep >= size - 1;
        }
    };
    

      

  • 相关阅读:
    类型转换器(InitBinder 初始化绑定器)
    transient关键字的用法
    Handler
    SpringMVC数据校验
    java中进程与线程的三种实现方式
    初识webservice 服务
    javaMail
    UI测试_错题解析
    ognl
    Struts2数据校验
  • 原文地址:https://www.cnblogs.com/kanekiken/p/8024442.html
Copyright © 2011-2022 走看看