首页 > 其他分享 >Day 9:1306 跳跃游戏III

Day 9:1306 跳跃游戏III

时间:2024-09-19 13:24:02浏览次数:3  
标签:1306 used return idx arr que false III Day

1306 跳跃游戏III

1. 题目描述

1306 跳跃游戏III

2. 解题思路

  1. 使用dfsbfs的思想来进行遍历;
  2. 使用used数组来表示当前位置是否被访问过。

3. 代码实现(DFS)

class Solution {
public:
    bool canReach(vector<int>& arr, int start) {
        int n = arr.size();
        vector<bool> used(n, false);
        
        function<bool(int)> dfs = [&](int idx) {
            if (idx < 0 || idx >= n))
                return false;
  			
  			if(used[idx])
  				return false;
                
            if (arr[idx] == 0)
                return true;
  
            used[idx] = true;
            
            return dfs(idx - arr[idx]) || dfs(idx + arr[idx]);
        };
        
        return dfs(start);
    }
};

4. 代码实现(BFS)

class Solution {
public:
    bool canReach(vector<int>& arr, int start) {
        int n = arr.size();
        vector<bool> used(n, false);

        queue<int> que;
        que.push(start);

        while (!que.empty()) {
            auto it = que.front();
            que.pop();

            // 下标超出范围
            if (it < 0 || it >= n)
                continue;
                
            // 当前位置下标已访问过
            if (used[it])
                continue;

            if (arr[it] == 0)
                return true;

            used[it] = true;

            que.push(it + arr[it]);
            que.push(it - arr[it]);
        }
        return false;
    }
};

标签:1306,used,return,idx,arr,que,false,III,Day
From: https://blog.csdn.net/qewa132/article/details/142357690

相关文章

  • 【每日刷题】Day124
    【每日刷题】Day124......
  • Day 19 回溯法part01| LeetCode 77.组合,216. 组合总和 III,17. 电话号码的字母组合
    理论基础回溯法(回溯搜索法)回溯函数就是递归函数本质是穷举解决的问题组合问题(不强调元素顺序,需去重)切割问题子集问题:一个N个数的集合里有多少符合条件的子集排列问题(强调元素顺序)棋盘问题:N皇后回溯法模板(可抽象为树形结构——N叉树来解决问题)递归返回值以及......
  • day6
    选择排序概述:选择排序是一种简单的排序算法,其基本思想是每次从未排序的部分中选择最小(或最大)的元素,然后放到已排序部分的末尾。步骤:从未排序部分中找到最小的元素。将这个最小的元素与未排序部分的第一个元素交换。将已排序部分扩大一位,未排序部分缩小一位。重复以上步骤......
  • LOJ #3490. 「JOISC 2021 Day2」逃跑路线
    Description在IOI王国,人们使用Byou作为时间单位。IOI王国中的一天被分为了\(S\)个时间单位。每天从最开始经过\(x\(0\lex<S)\)Byou后的时间称为时刻\(x\)。IOI王国由\(N\)个城市组成,以\(0\)到\(N-1\)编号。其中有\(M\)条双向道路连接某些城市,以\(0\)......
  • 正式一刷代码随想录-day01
    数组T35 搜索插入位置1.想清楚边界,是否需要left<=right2.想清楚如果没有找到的几种情况,有没有遗漏的情况。3.此题需要注意返回的不可超过边界值。T34  在排序数组中查找元素的第一个和最后一个位置1.分析题目:三种情况:1.target不在数组大小的范围内2.在范围内但不在数......
  • 【每日刷题】Day125
    【每日刷题】Day125......
  • Day12.异常
    异常什么是异常异常指程序运行过程中出现的不期而至的各种状况,Exception异常发生在程序运行期间,它影响了正常的程序执行流程简单分类检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的,这些异常在编译时不能被简单地忽略运行时异常:运行时异常......
  • Day18 二叉树part08| LeetCode 669. 修剪二叉搜索树 , 108.将有序数组转换为二叉搜索树
    669.修剪二叉搜索树669.修剪二叉搜索树classSolution{publicTreeNodetrimBST(TreeNoderoot,intlow,inthigh){if(root==null)returnnull;//处理节点值<low的情况:当前节点及其左子树的所有节点都不在范围内,继续在其右子树上修......
  • c基础day10
    目录[1]递归函数[2]结构体结构体变量赋值访问重命名结构体数组定义初始化结构体数组的输入输出结构体指针结构体大小共用体枚举存储类型[1]递归函数递推:从原问题出发,按递归公式从未知到已知,最终到达递归终止条件回归:按递归的终止条件求出结果,你想逐步带入......
  • Day22笔记-多态&函数重写&运算符重载&对象的内置内容
    一、多态多态的前提:继承体现1:同一种事物的多种体现形式,如:动物有很多种体现2:在定义的过程无法确定变量的类型,只有当程序正常运行的时候才会确定该变量是什么类型,调用哪个函数#体现1:同一种事物的多种体现形式,如:动物有很多种classAnimal():  passclassCat(Animal):......