zoukankan      html  css  js  c++  java
  • LeetCode 1306 跳跃游戏 III Jump Game III

    地址 https://leetcode-cn.com/problems/jump-game-iii/submissions/

    题目描述
    这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时,你可以跳到 i + arr[i] 或者 i - arr[i]。

    请你判断自己是否能够跳到对应元素值为 0 的 任意 下标处。

    注意,不管是什么情况下,你都无法跳到数组之外。

    示例 1:
    
    输入:arr = [4,2,3,0,3,1,2], start = 5
    输出:true
    解释:
    到达值为 0 的下标 3 有以下可能方案: 
    下标 5 -> 下标 4 -> 下标 1 -> 下标 3 
    下标 5 -> 下标 6 -> 下标 4 -> 下标 1 -> 下标 3 
    示例 2:
    
    输入:arr = [4,2,3,0,3,1,2], start = 0
    输出:true 
    解释:
    到达值为 0 的下标 3 有以下可能方案: 
    下标 0 -> 下标 4 -> 下标 1 -> 下标 3
    示例 3:
    
    输入:arr = [3,0,2,1,2], start = 2
    输出:false
    解释:无法到达值为 0 的下标 1 处。 
    
    提示:
    
    1 <= arr.length <= 5 * 10^4
    0 <= arr[i] < arr.length
    0 <= start < arr.length

    算法1
    常规dfs题目 额外添加了一个数组记录该点是否已经访问过 避免重复访问

    class Solution {
    public:
    
        vector<int> vis;
    
    bool dfs(const vector<int>& arr, int idx) {
        if (idx >= arr.size() || idx < 0 || vis[idx] == 1)
            return false;
    
        if (arr[idx] == 0) return true;
    
        vis[idx] = 1;
    
    
        bool ret1, ret2;
    
        int newidx1 = idx + arr[idx];
        ret1 = dfs(arr,newidx1);
        if (ret1 == true) return true;
    
        int newidx2 = idx - arr[idx];
        ret2 = dfs(arr, newidx2);
        if (ret2 == true) return true;
    
        return false;
    }
    
    
    
    bool canReach(vector<int>& arr, int start) {
        vis.resize(50010);
        bool ret = dfs(arr, start);
    
        return ret;
    }
    
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    JDK+MyEclipse+Tomcat配置
    常用数据类型占内存字节数
    连连看核心算法
    gnuplot画图
    socket服务器的搭建-Mac
    AlertController提示框
    block-循环引用
    OC基础(21)
    OC基础(20)
    OC基础(19)
  • 原文地址:https://www.cnblogs.com/itdef/p/12118476.html
Copyright © 2011-2022 走看看