【LeetCode: 2596. 检查骑士巡视方案:深度优先搜索】

news2024/11/24 9:51:07

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ dfs
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 2596. 检查骑士巡视方案

⛲ 题目描述

骑士在一张 n x n 的棋盘上巡视。在有效的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。

给你一个 n x n 的整数矩阵 grid ,由范围 [0, n * n - 1] 内的不同整数组成,其中 grid[row][col] 表示单元格 (row, col) 是骑士访问的第 grid[row][col] 个单元格。骑士的行动是从下标 0 开始的。

如果 grid 表示了骑士的有效巡视方案,返回 true;否则返回 false。

注意,骑士行动时可以垂直移动两个格子且水平移动一个格子,或水平移动两个格子且垂直移动一个格子。下图展示了骑士从某个格子出发可能的八种行动路线。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
提示:

n == grid.length == grid[i].length
3 <= n <= 7
0 <= grid[row][col] < n * n
grid 中的所有整数 互不相同

🌟 求解思路&实现代码&运行结果


⚡ dfs

🥦 求解思路

  1. 通过题目的意思,我们可以知道,题目让我们求解的是:从左上角位置开始,每次可以走八个方向,也就是字形状,从0位置开始,下一个可达的位置数值加1,到n*n-1所有的情况都走完,是否存在这样的一种情况呢。如果是,返回true,否则,返回false。
  2. 我们直接通过dfs来求解这8个方向即可。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。

🥦 实现代码

class Solution {
    int[][] grid;
    int n;
    int cnt=0;
    public boolean checkValidGrid(int[][] grid) {
        this.grid=grid;
        this.n=grid.length;
        return dfs(0,0);
    }

    public boolean dfs(int x,int y){
        if(x<0||x>=n||y<0||y>=n){
            return false;
        }
        if(cnt!=grid[x][y]) return false;
        if(grid[x][y]==n*n-1) return true;
        boolean flag=false;
        cnt++;
        flag|=dfs(x+1,y+2);
        flag|=dfs(x+1,y-2);
        flag|=dfs(x+2,y+1);
        flag|=dfs(x+2,y-1);
        flag|=dfs(x-1,y+2);
        flag|=dfs(x-1,y-2);
        flag|=dfs(x-2,y+1);
        flag|=dfs(x-2,y-1);
        cnt--;
        return flag;
    }
}

🥦 运行结果

时间复杂度&空间复杂度

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

力扣 -- 300. 最长递增子序列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int lengthOfLIS(vector<int>& nums) {int nnums.size();vector<int> dp(n,1);int ret1;for(int i0;i<n;i){for(int j0;j<i;j){if(nums[j]<nums[i]){dp[i]max(dp[i],dp[j]1);}}r…

分布式系统第五讲:分布式事务及实现方案

分布式系统第五讲&#xff1a;分布式事务及实现方案 事务是一个程序执行单元&#xff0c;里面的所有操作要么全部执行成功&#xff0c;要么全部执行失败。而分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本…

微服务07-认识MQ+RabbitMQ入门

1.前言 了解同步调用和异步调用 1.1.同步调用 比如这里的支付服务&#xff0c;需要等待订单服务、短信服务…执行完毕才能执行&#xff0c;这样支付整个流程完毕需要500ms 然后如果订单、仓储等其中一个服务挂掉了&#xff0c;那么支付服务请求请求不了&#xff0c;挂掉的服…

Python实现进制转换

1 问题 如何将一个数从十进制转换成二进制&#xff0c;这个数从键盘输入。 2 方法 &#xff08;1&#xff09;输入一个十进制的数; &#xff08;2&#xff09;将这个数除以2求商和余数 &#xff08;3&#xff09;再用2去除商&#xff0c;又会得到一个商和余数&#xff0c;如此进…

企业用设备管理系统有什么好处?的修大数据管理平台的功能强大吗?

在现代工业运营中&#xff0c;设备的高效管理与维护对于维持生产稳定及提升企业竞争力具有重大意义。而设备管理系统作为一项重要工具&#xff0c;可以极大地提高企业的生产效率与设备维护的准确性。 企业使用设备管理系统的原因如下&#xff1a;   提高设备利用率&#xff1…

小白自助发卡销售系统|支持自助选号批量购买Thinkphp6.0+Layui

小白自助发卡销售系统 本系统由小白独立开发thinkphp+layui 功能特色: 1.前台下单支持自助选号。 2.前台库存显示方案增加3种。 3.自定义商品图片。 4.支持邮件通知功能具体可到后台自行体验。 5.支持批量下单购买。 6.支持易支付接口(目前用的比较多) 7.支持批量导入卡密 8.P…

从0到1理解ChatGPT原理

目录 写在前面 1.Tansformer架构模型 2.ChatGPT原理 3.提示学习与大模型能力的涌现 3.1提示学习 3.2上下文学习 3.3思维链 4.行业参考建议 4.1拥抱变化 4.2定位清晰 4.3合规可控 4.4经验沉淀 机械工业出版社京东自购链接 写在前面 2022年11月30日&#xff0c;ChatG…

【数据结构】二叉树链式结构的实现(三)

目录 一&#xff0c;二叉树的链式结构 二&#xff0c;二叉链的接口实现 1&#xff0c;二叉链的创建 2&#xff0c;接口函数 3&#xff0c;动态创立新结点 4&#xff0c;创建二叉树 5&#xff0c;前序遍历 6&#xff0c;中序遍历 7&#xff0c;后序遍历 三&#xff0c;结点个…

嵌入式学习笔记(25)串口通信的基本原理

三根通信线&#xff1a;Tx Rx GND &#xff08;1&#xff09;任何通信都要有信息作为传输载体&#xff0c;或者有线的或则无线的。 &#xff08;2&#xff09;串口通信时有线通信&#xff0c;是通过串口线来通信的。 &#xff08;3&#xff09;串口通信最少需要2根&#xff…

“熊猫杯” | 赛宁网安获网络安全优秀创新成果大赛优胜奖

9月11日&#xff0c;四川省2023年国家网络安全宣传周正式启动。由四川省委网信办指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;成都信息工程大学、四川省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛—成都分站赛(暨四川省‘…

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头&#xff08;1&#xff09;HTTP的请求报头结构&#xff08;2&#xff09;HTTP的请求方法 3.HTTP应答报头&#xff08;1&#xff09;HTTP的应答报头结构&#xff08;2&#xff09; HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

小程序源码:多功能口袋工具箱微信小程序源码-带流量主|云开发(更新)

这里主要分享多功能口袋工具箱微信小程序源码&#xff0c;有带流量主&#xff0c;而且超多功能工具箱组合的微信小程序源码。无需服务器即可搭建&#xff0c;可以设置流量主赚取收益。 源码链接&#xff1a; 网盘源码 密码&#xff1a;hma8 工具箱的应用一览&#xff1a; 1…

部署kibana可视化平台

部署kibana可视化平台 案例版本&#xff1a;kibana 8.6.2 1、下载 去官网中查找与安装的ES版本一致的安装包&#xff1a;官网kibana下载。 可以选择自行下载好后放入服务器中进行安装&#xff0c;也可以使用wget下载&#xff1a; # 下载 cd /home/elasticsearch/kibana wge…

LeetCode 1132.申请的报告2

数据准备 Create table If Not Exists Actions (user_id int, post_id int, action_date date, action ENUM(view, like, reaction, comment, report, share), extra varchar(10)); create table if not exists Removals (post_id int, remove_date date); Truncate table Act…

【ccf-csp题解】第2次csp认证-第四题-最优配餐-多源BFS

题目描述 思路讲解 这道题的数据量是10^6&#xff0c;直接用floyd算法&#xff0c;肯定是不行的 此处介绍新的思路&#xff1a;多源BFS 我们的核心目的是&#xff0c;对于每一个终点&#xff08;即此处的顾客&#xff09;能够找到离它最近的源点&#xff08;即此处的餐馆&am…

GFS分布式存储

一&#xff0c;gfs简介 GlusterFS 是一个开源的分布式文件系统&#xff0c;由存储服务器、客户端以及NFS/Samba 存储网关&#xff08;可选&#xff0c;根据需要选择使用&#xff09;组成。没有元数据服务器组件&#xff0c;这有助于提升整个系统的性能、可靠性和稳定性。 传统的…

第七章 系统管理和维护

第七章 系统管理和维护 ​ 当我们要登录系统或访问系统的某个资源时&#xff0c;通常都要求输入用户名和密码&#xff0c;从系统的角度看&#xff0c;用户就是一种进行认证或授权的标识。只有通过认证的用户才能访问相应的资源&#xff0c;而对于同一个资源&#xff0c;不同的…

再获新突破!移远通信RedCap模组拿下首张端网协同测评证书

为进一步推动5G技术的商用和普及&#xff0c;今年8月初&#xff0c;移远通信与广东联通联合建立了5G端网能力研究联合实验室&#xff08;以下简称“联合实验室”&#xff09;&#xff0c;双方将在5G及RedCap各项性能的研究方面展开深入合作。广东联通网络产品创新中心总经理潘桂…

恒运资本:股市几点开盘和收盘?

股票商场在股票生意日打开&#xff0c;每个国家的股票商场都有自己的开盘和收盘时间。在本文中&#xff0c;我们将分析股市开盘和收盘时间的重要性&#xff0c;以及股市如安在纷歧起区的运作。我们还将讨论股市开盘和收盘时间的改动&#xff0c;以及这些改动对股票商场的影响。…

JVM核心参数图解-整理

一、VM核心参数 在JVM里有几个比较核心的参数&#xff0c;今天就主要来讲这几个&#xff1a; -Xms&#xff1a;JVM初始堆内存大小-Xmx&#xff1a;JVM堆内存的最大值-Xmn&#xff1a;JVM中新生代大小-XX:PermSize&#xff1a;永久代大小-XX:MaxPermSize&#xff1a;永久代最大…