LeetCode 1306.跳跃游戏III

题目:

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

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

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

思路 :

代码:

java 复制代码
class Solution {
    public boolean canReach(int[] arr, int start) {
        boolean[] visited = new boolean[arr.length];
        return dfs(arr, start, visited);
    }

    private boolean dfs(int[] arr, int curPos, boolean[] visited) {
        if (curPos < 0 || curPos >= arr.length || visited[curPos]) {
            return false;
        }
        if (arr[curPos] == 0) {
            return true;
        }
        visited[curPos] = true;
        return dfs(arr, curPos - arr[curPos], visited) || dfs(arr, curPos + arr[curPos], visited);
    }
}

性能:

时间复杂度o(n)每个节点最多被访问一次

空间复杂度o(n)visit数组 o(n);递归深度最多 o(n)

相关推荐
leobertlan7 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
开发小能手1238 小时前
答案daanC语言
数据结构·算法
Navigator_Z10 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
旺仔仔仔12 小时前
机器人项目实战(5):从单次抓取,到接收指令连续做事
算法
旺仔仔仔12 小时前
机器人项目实战(2):识别物体、提取点云,再到抓取姿态
算法
姜鱼问生12 小时前
密码明明一样,为什么 GPG 说“错的“?
后端·算法·架构
启观川12 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
对空六课12 小时前
指标口径生效时间的版本查询实现
大数据·服务器·前端·算法·数据分析