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


    这题是典型的贪心。
    我们用一个变量canReach表示最远能到达的距离,canReach的初始值为0。
    遍历数组,当遍历到位置x时,如果x小于等于canReach,说明当前位置可以从起点经过若干步跳跃到达,
    因此我们可以用canReach = max(canReach, x + nums[x])更新当前可以到达的最远距离。
    如果某一步更新了canReach之后,发现最远可到达的距离已经超过了数组的最后一个位置(canReach大于等于nums.size() - 1),
    说明最后一个位置可达,返回true。
    如果数组遍历结束之后,canReach还是小于数组的最后一个位置,说明最后一个位置不可达,返回false。
    代码如下:

    class Solution {
    public:
        bool canJump(vector<int>& nums) {
            int canReach = 0;
            for(int i = 0; i < nums.size(); ++i) {
                if(i <= canReach) {
                    canReach = max(canReach, i + nums[i]);
                    if(canReach >= nums.size() - 1) {
                        return true;
                    }
                }
            }
            return false;
        }
    };
    
  • 相关阅读:
    govalidators 验证
    go iris框架 获取url的两种方法
    tornado框架
    并发/并行,阻塞/非阻塞,同步/异步
    CSS选择器及优先级
    linux下压力测试命令ab
    asyncio
    linux网络原理及基础设置
    linux命令
    linux简介
  • 原文地址:https://www.cnblogs.com/linrj/p/13196719.html
Copyright © 2011-2022 走看看