zoukankan      html  css  js  c++  java
  • leetcode 55. Jump Game、45. Jump Game II(贪心)

    55. Jump Game

    第一种方法:

    只要找到一个方式可以到达,那当前位置就是可以到达的,所以可以break

    class Solution {
    public:
        bool canJump(vector<int>& nums) {
            int length = nums.size();
            if(length <= 0)
                return false;
            vector<bool> dp(length,false);
            dp[0] = true;
            for(int i = 1;i < length;i++){
                for(int j = i - 1;j >= 0;j--){
                    if(dp[j] == true && i - j <= nums[j]){
                        dp[i] = true;
                        break;
                    }
                }
            }
            return dp[length-1];
        }
    };

    第二种方法:

    第一种方法时间复杂度高且需要O(n)的空间复杂度。这题用贪心在O(n)的时间复杂度,O(1)的空间复杂度就可以解决。

    用一个reach变量记录当前位置能达到的最远的位置索引,每次更新,如果reach比当前的索引小伙子reach已经能到达最后一个位置就可以break掉。

    注意:reach及其比较的对象都是数组的索引,即n-1。

    https://www.cnblogs.com/grandyang/p/4371526.html

    class Solution {
    public:
        bool canJump(vector<int>& nums) {
            if(nums.empty())
                return false;
            int reach = 0;
            for(int i = 0;i < nums.size();i++){
                if(reach < i || reach >= nums.size() - 1)
                    break;
                reach = max(reach,i + nums[i]);
            }
            return reach >= nums.size() - 1;
        }
    };

    45. Jump Game II

    https://www.cnblogs.com/grandyang/p/4373533.html

    pre记录的是前一次能达到的最远位置的索引,cur是当前能达到的最远位置的索引。

    你每一次的更新其实都是在前一次最远距离的范围内更新下一次的最远距离。

    这个i是当前遍历的位置。

    class Solution {
    public:
        int jump(vector<int>& nums) {
            int cur = 0,res = 0,i = 0;
            int pre;
            while(cur < nums.size() - 1){
                res++;
                pre = cur;
                for(;i <= pre;i++)
                    cur = max(cur,i + nums[i]);
            }
            return res;
        }
    };
  • 相关阅读:
    二叉搜索树
    【树】List Leaves
    模板——dijkstra单源最短路
    余数求和——除法分块
    倍增——ST表
    线段树——内存池
    线段树——模板
    洛谷 P1498 南蛮图腾
    洛谷 P2199 最后的迷宫
    洛谷 P1495 中国剩余定理
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10709842.html
Copyright © 2011-2022 走看看