LeetCode——矩阵中移动的最大次数

news2024/12/23 17:35:00

目录

1、题目

 2、题目解读

 3、代码


1、题目

2684. 矩阵中移动的最大次数 - 力扣(Leetcode)

给你一个下标从 0 开始、大小为 m x n 的矩阵 grid ,矩阵由若干  整数组成。

你可以从矩阵第一列中的 任一 单元格出发,按以下方式遍历 grid :

  • 从单元格 (row, col) 可以移动到 (row - 1, col + 1)(row, col + 1) 和 (row + 1, col + 1) 三个单元格中任一满足值 严格 大于当前单元格的单元格。

返回你在矩阵中能够 移动 的 最大 次数。

示例 1:

输入:grid = [[2,4,3,5],[5,4,9,3],[3,4,2,11],[10,9,13,15]]
输出:3
解释:可以从单元格 (0, 0) 开始并且按下面的路径移动:
- (0, 0) -> (0, 1).
- (0, 1) -> (1, 2).
- (1, 2) -> (2, 3).
可以证明这是能够移动的最大次数。

示例 2:

输入:grid = [[3,2,4],[2,1,9],[1,1,7]]
输出:0
解释:从第一列的任一单元格开始都无法移动。

提示:

  • m == grid.length
  • n == grid[i].length
  • 2 <= m, n <= 1000
  • 4 <= m * n <= 105
  • 1 <= grid[i][j] <= 106

 2、题目解读

题目第二个示例,第一列中的3的左边还有左下角都比3小,不能移动。2和1也是如此,所以无法移动

理解题目意思,然后就是dfs,每一轮向右搜索一列。注意不要重复搜索!

 3、代码

class Solution {
      //dfs
    private int n;
    private int m;
    private int max=0;//保存 当前最大移动次数

    public int maxMoves(int[][] grid) {
        n=grid.length;
        m=grid[0].length;
        //vis用于剪枝操作
        boolean[][] vis = new boolean[n][m];
        for(int i=0;i<n;i++)
        {
            dfs(i,0,grid, vis);
            //如果max为m-1,已经是能达到的最大值了,无须再考虑后面的情况了
            if(max==m-1)
                break;
        }
        return max;
    }
    public void dfs(int i, int j, int[][] grid, boolean[][] vis)
    {
        //如果j达到最大值,说明可以移动到最后一列,此时就可以退出递归了
        if(j==m-1)
        {
            max=m-1;
            return;
        }
        //符合移动条件,且目标单元格还没有搜索过
        if(grid[i][j+1]>grid[i][j] && !vis[i][j + 1])
        {
            //继续搜索
            dfs(i,j+1,grid,vis);
            //并标记目标单元格已经搜索,避免重复搜索
            vis[i][j+1]=true;
        }
        //下面同理
        if(i>0 && grid[i-1][j+1]>grid[i][j] && !vis[i - 1][j + 1])
        {
            dfs(i-1,j+1,grid,vis);
            vis[i-1][j+1]=true;
        }
        if(i<n-1 && grid[i+1][j+1]>grid[i][j] && !vis[i + 1][j + 1])
        {
            dfs(i+1,j+1,grid,vis);
            vis[i+1][j+1]=true;
        }
        //全部搜索完毕后,若j值比max大,则保留该j值为最大值
        max=Math.max(max,j);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面了一个00后测试工程师,问啥啥不会开口就要15k,我也是麻了····

在深圳这家金融公司也待了几年&#xff0c;被别人面试过也面试过别人&#xff0c;大大小小的事情也见识不少&#xff0c;今天又是团面的一天&#xff0c; 一百多个人都聚集在一起&#xff0c;因为公司最近在谈项目出来面试就2个人&#xff0c;无奈又被叫到面试房间。 整个过程我…

一体化医学影像平台PACS源码,影像存档与传输系统源码

PACS影像存档与传输系统源码 PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 是基于DICOM标准的医学影像管理系统&…

分布式锁-Redis

一、为什么要有锁的概念 1.假如现在我们有这么一个场景&#xff1a; 用户在淘宝app上购买商品,用户提交订单的时候提交了,多点击了几次。 不管用户点击几次,只要用户一直停留在一个页面&#xff0c;那么就必须生成一个订单。 1.1 如果我们的服务是单体服务的话 比如现在我们的…

单片机中GPIO八种工作模式详细分析

今天给大家讲解一下 GPIO 基础&#xff0c;参考资料&#xff1a; STM32F1xx 官方资料&#xff1a; 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO) GPIO 是通用输入/输出端口的简称&#xff0c;是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接&#xff…

2023护网蓝初面试题汇总

一、描述外网打点的流程&#xff1f; 二、举几个 FOFA 在外网打点过程中的使用小技巧&#xff1f; 三、如何识别 CND &#xff1f; 四、邮件钓鱼的准备工作有哪些&#xff1f; 五、判断出靶标的 CMS &#xff0c;对外网打点有什么意义&#xff1f; 六、 Apache Log4j2…

云原生之深入解析Kubernetes常见的多集群方案

一、前言 Kubernetes 从 1.8 版本起就声称单集群最多可支持 5000 个节点和 15 万个 Pod&#xff0c;实际上应该很少有公司会部署如此庞大的一个单集群&#xff0c;很多情况下因为各种各样的原因我们可能会部署多个集群&#xff0c;但是又想将它们统一起来管理&#xff0c;这时…

QT圆形进度条(QT桌面项目光照强度检测)

文章目录 前言一、编程思路二、核心代码实现总结 前言 本篇文章我们讲解QT实现圆形进度条&#xff0c;并实现动态的效果。 一、编程思路 实现QT圆形进度条其实是非常简单的&#xff0c;思路就是画两个圆弧。 这里大家就会觉得很奇怪了为什么画两个圆弧就能实现圆形进度条了呢…

极智AI | AIGC时代中AI巨头之间的博弈

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来谈谈 AIGC时代AI巨头之间的博弈。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 下图是开复老师在 《AI 未来》演讲中一页…

举办各种活动可以选云仓酒庄的雷盛红酒205

初次品尝红酒的人&#xff0c;可能跟初次品茶一样&#xff0c;这种酸涩的味道为什么会吸引这么多人魂牵梦绕。就像初生的婴儿&#xff0c;只有啼哭着面对世界&#xff0c;不解的望着新世界&#xff0c;只有时间的沉淀&#xff0c;实践的积累才会慢慢懂得&#xff0c;品酒也是这…

[Nacos] Nacos Server处理注册请求 (六)

文章目录 InstanceController.register()1.获取到请求中指定属性的值2.通过请求参数组装出instance3.将instance写入到注册表3.1 创建一个空的service临时的实例3.1.1 重写计算校验和3.1.2 将service写入到注册表3.1.2.1 将service写入注册表3.1.2.2 初始化service内部健康检测…

软考数据库详细知识点整理(全)

目录 第一章 计算机系统基本知识 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构 1.3 可靠性、性能、安全 …

MySQL数据库---笔记3

MySQL数据库---笔记3 一、储存引擎1.1、MySQL体系结构1.2、存储引擎简介1.3、存储引擎特点1.3、存储引擎选择 二、索引 一、储存引擎 1.1、MySQL体系结构 MySQL体系结构图 连接层 最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安…

MySQL索引优化实战EXPLAIN解析

先来介绍一下具体的业务场景 当用户登录后&#xff0c;需要查看能够学习的课程&#xff0c;不同的用户看到的课程是不同的&#xff0c;课程存在权限&#xff0c;权限是被下面lesson_user_permissions表控制的&#xff0c;其中sys_user_id 和 lesson_id 作为联合主键 另外还有一…

Prompt Engineering | 对话聊天prompt

&#x1f604; 使用LLM来搭建一个定制的聊天机器人&#xff0c;只需要很少的工作量。 ⭐ 本文将讲解如何利用聊天格式与个性化或专门针对特兹那个任务或行为的聊天机器人进行多伦对话。 文章目录 1、提供对话的早期部分&#xff0c;引导模型继续聊天2、示例&#xff1a;构建一个…

基于ZeroTier虚拟网络搭建分流策略及创建IPv6网络

假设无数个成员&#xff08;移动设备、终端、Docker&#xff09;&#xff0c;需要劫持所有请求&#xff0c;并根据它们请求所访问的域名解析出IPv6或者IPv4地址来进行有效的选择性访问 说的直白一点点就是&#xff1a;分流策略 这里例一下需要做的工作&#xff0c;来看一下&am…

多维时序预测 | Matlab基于最小二乘支持向量机LSSVM多维时间序列预测,LSSVM多变量时间序列预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 基于最小二乘支持向量机LSSVM多维时间序列预测LSSVM多变量时间序列预测,matlab代码 评价指标包括:MAPE、MAE、RMSE和R2等,代码质量极高,

【毕业季】青春散场,我们期待下一场的开幕

青春&#xff0c;是一段追梦的旅程&#xff0c;毕业&#xff0c;是一次释放梦想的契机&#xff0c;祝愿每位毕业生在新的征程中&#xff0c;勇往直前&#xff0c;追逐梦想。 目录 青春散场&#xff0c;我们期待下一场的开幕 回忆过去 憧憬未来 青春散场&#xff0c;我们期待…

做好功能测试需要的8项基本技能【点工进来】

功能测试是测试工程师的基础功&#xff0c;很多人功能测试还做不好&#xff0c;就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点&#xff0c;如何自己不用心去悟&#xff0c;去研究&#xff0c;那么你的职业生涯也就停留在点点点上了。在这里&#xff0c;我把…

重磅新书上市,带你看看了不起的芯片!

千呼万唤始出来&#xff0c;我的第一本书《了不起的芯片》今天正式和大家见面啦! 任何一本书的背后都有一段不为人知的曲折故事&#xff0c;在此和大家分享一下我写这本书的心路历程。希望我的经历对你能有一些帮助&#xff0c;也希望你能喜欢我的作品。我还为大家申请了专属优…

vite3+vue3 项目打包优化三 — CDN加速、文件压缩

1. CDN在线加速 内容分发网络&#xff08;Content Delivery Network&#xff0c;简称 CDN&#xff09;&#xff0c;是构建在数据网络上的一种分布式内容分发网&#xff0c;它可以让用户从最近的服务器请求资源&#xff0c;以提升网络请求的响应速度。 通常情况下&#xff0c;…