zoukankan      html  css  js  c++  java
  • leetcode 55 跳跃游戏

    /**
    从i=0开始遍历,每次更新所能达到的最远距离,如果循环break之后最远距离超过len则能够到达最后一个位置;
    但是并不需要具体计算出每次需要跳到哪个台阶;如果需要找出所有可能的结果呢?
    以动态规划的思路考虑:
    i=0->len-1:
    dp[i] 为走完第i个台阶所能到达的最远位置,那么他就是在之前所能到达的最远位置和本次所能到达最远位置之间取最大值;
    即dp[i]=max(dp[i-1],nums[i]+i),且i的范围在0~l_max之间,即在能够到达的范围内更新l_max;
    
    
    
    **/
    
    class Solution {
    public:
        bool canJump(vector<int>& nums) {
            int len=nums.size();
            int l_max=0;
            for(int i=0;i<=l_max&&i<len;i++){
                l_max=max(l_max,nums[i]+i);
            }
            return l_max>=len-1;
        }
    };

     应用贪心算法:每次遍历范围为当前能达到的最远距离,如果将当前能达到的所有点全部遍历完成后,最大距离仍然没有超过终点,那么则不能到达终点;如果能到达的最大距离nums[i]+i大于当前能到的最大点t,那么更新t;

    class Solution {
    public:
        bool canJump(vector<int>& nums) {
            //贪心算法:每次在可到达范围内的点,更新能到达的最远距离,如果最终这个距离大于len则说明可以到达终点,时间复杂度O(n);
            int len=nums.size();
            if(len==0) return true;
            int t=0;
            for(int i=0;i<=t&&i<len;i++){
                t=max(t,i+nums[i]);
            }
            return t>=len-1;
        }
    };
  • 相关阅读:
    Quartz快速入门 (转自 http://www.blogjava.net/baoyaer/articles/155645.html)
    C#HTML 转文本及HTML内容提取
    创建连接字符串方法
    源生js _AJax
    .NET里面附件上传大小限制的控制
    错误记录 COM
    Quartz的cron表达式
    Quartz 多任务调用
    Myeclipse的web工程和Eclipse互相转换
    Myeclipse8.0序列号生成程序
  • 原文地址:https://www.cnblogs.com/joelwang/p/10637661.html
Copyright © 2011-2022 走看看