当前位置: 首页 > news >正文

[LeetCode 1306] 跳跃游戏3(Ⅲ)

题面:

LeetCode 1306
在这里插入图片描述

思路:

只要能跳到其中一个0即可,和跳跃游戏1/2完全不同了,记忆化暴搜即可。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)

代码:

dfs

vector<bool> vis;

void dfs(vector<int>& arr, vector<int>& ends, int start, int n, bool& ans) {
    if(ans) return ;
    if(!vis[start]) {
        vis[start] = true;
        if(find(ends.begin(), ends.end(), start) != ends.end()) {
            ans = true;
            return ;
        }
        if(start - arr[start] >= 0)
            dfs(arr, ends, start - arr[start], n, ans);
        if(start + arr[start] < n)
            dfs(arr, ends, start + arr[start], n, ans);
    }
    return ;
}

bool canReach(vector<int>& arr, int start) {
    vector<int> ends;
    int n = arr.size();
    bool ans = false;
    vis = vector(n, false);
    for(int i = 0; i < n; ++i)
        if(arr[i] == 0)
            ends.push_back(i);
    if(ends.empty()) return ans;
    dfs(arr, ends, start, n, ans);
    return ans;
}

相关文章:

  • AD利用转换工具快速生成异形焊盘
  • 从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响
  • TLA:用于接触-丰富操作的触觉-语言-动作模型
  • Profibus DP转ModbusTCP网关通讯案例解析
  • Arrays.asList() 隐藏的陷阱
  • 论文导读 | 基于GPU的子图匹配算法
  • #4 我们为什么使用物联网? 以及 物联网的整体结构
  • Python六大数据类型与可变类型
  • Thread类的基本用法
  • 用Webpack 基础配置快速搭建项目开发环境
  • 支持多项检测的多段环形光源 助力金属零件缺陷检测
  • Wincc7.5 对于此版本的wincc,许可证的存储介质必须插入usb接口
  • 项目风险的早期识别与应对清单
  • Swift观察机制新突破:如何用AsyncSequence实现原子化数据监听?
  • prime 1 靶场笔记(渗透测试)
  • 开源技术如何助力中小企业实现财务管理自主化?
  • 将你的 Rust + WebAssembly 项目发布到 npm
  • 开源项目 | 17款云原生安全相关的扫描和平台类开源工具
  • 开关电源输出过冲抑制设计方法
  • 选导师原理
  • 合肥打造全球首个无人艇超级工厂,请看《浪尖周报》第21期
  • 成了“一日顶流”又能如何?
  • 寒武纪一季度营收猛增42倍,净利3.55亿元,连续两个季度盈利
  • 工信部:加快推进6G技术研发等,前瞻布局和培育面向6G的应用产业生态
  • 美法官裁定谷歌非法垄断在线广告
  • 聚餐醉酒后骑车撞树身亡、家属起诉共饮者赔44万,法院已判