Day 27:2596. 检查骑士巡视方案

Leetcode 2596. 检查骑士巡视方案

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

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

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

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

image.png

记录当前所在位置,判断 8 个方向是否有符合要求的结果。
但测试中有个比较恶心的值, grid[0][0]不等于 0,这个是初始条件就不符合题意的,因此直接返回 false

完整代码

class Solution {
    int x = 0;
    int y = 0; // x, y 当前所在位置
    int n; // 矩阵大小
    public boolean checkValidGrid(int[][] grid) {
        if (grid[0][0] != 0) return false;
        n = grid.length;
        for (int i = 1; i < n * n; i++) {
            if (!checkGrid(grid, i)) {
                // System.out.println(i);
                return false;
            }
        }

        return true;
    }

    public boolean checkGrid(int[][] grid, int num) {
        // System.out.println(x + " " + y);
        if (x - 2 >= 0 && y + 1 < n && grid[x - 2][y + 1] == num) {
            x = x - 2;
            y = y + 1;
            return true;
        } else if (x - 1 >= 0 && y + 2 < n && grid[x - 1][y + 2] == num) {
            x = x - 1;
            y = y + 2;
            return true;
        } else if (x + 1 < n && y + 2 < n && grid[x + 1][y + 2] == num) {
            x = x + 1;
            y = y + 2;
            return true;
        } else if (x + 2 < n && y + 1 < n && grid[x + 2][y + 1] == num) {
            x = x + 2;
            y = y + 1;
            return true;
        } else if (x + 2 < n && y - 1 >= 0 && grid[x + 2][y - 1] == num) {
            x = x + 2;
            y = y - 1;
            return true;
        } else if (x + 1 < n && y - 2 >= 0 && grid[x + 1][y - 2] == num) {
            x = x + 1;
            y = y - 2;
            return true;
        } else if (x - 1 >= 0 && y - 2 >= 0 && grid[x - 1][y - 2] == num) {
            x = x - 1;
            y = y - 2;
            return true;
        } else if (x - 2 >= 0 && y - 1 >= 0 && grid[x - 2][y - 1] == num) {
            x = x - 2;
            y = y - 1;
            return true;
        }
        return false; 
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小米SU7遇冷,下一代全新车型被官方意外曝光

不知道大伙儿有没有发现&#xff0c;最近小米 SU7 热度好像突然之间就淡了不少&#xff1f; 作为小米首款车型&#xff0c;SU7 自上市以来一直承载着新能源轿车领域流量标杆这样一个存在。 发售 24 小时订单量破 8 万&#xff0c;2 个月后累计交付破 2 万台。 看得出来限制它…

Blender渲染模糊?掌握这些技巧,提升你的渲染质量!

随着Blender生态链越来越完善,越来越多的人开始学习Blender。然而&#xff0c;在使用Blender的过程中&#xff0c;许多小伙伴遇到了各种问题。比如&#xff1a; 为什么blender渲染物品很糊?能让它们变得清晰吗&#xff1f; Blender渲染不出来&#xff0c;有时渲染出来了就闪…

基本循环神经网络(RNN)

RNN背景&#xff1a;RNN与FNN 在前馈神经网络中&#xff0c;信息的传递是单向的&#xff0c;这种限制虽然使得网络变得更容易学习&#xff0c;但在一定程度上也减弱了神经网络模型的能力。 在生物神经网络中&#xff0c;神经元之间的连接关系要复杂的多。前馈神经网络可以看着…

使用fetch加载阿里云的在线json 出现403错误

在做地图项目的时候&#xff0c;引用了阿里云的在线JSON地图数据。 问题描述&#xff1a; 但是本地开发使用fetch请求json地址的时候接口却出现了403错误&#xff0c;把地址直接复制到浏览器上却能正常打开。 https://geo.datav.aliyun.com/areas_v3/bound/330000_full.json …

[学习笔记]-MyBatis-Plus简介

简介 Mybatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 简言之就是对单表的增删改查有了很好的封装。基本不用再单独写sql语句了。目前此类…

【华为HCIA数通网络工程师真题-数据通信与网络基础】

文章目录 选择题判断题 选择题 1、在 VRP 平台上&#xff0c;可以通过下面哪种方式访向上条历史命令&#xff1f; 上光标 &#xff08;ctrlU 为自定义快捷键&#xff0c;ctrlP 为显示历史缓存区的前一条命令&#xff0c;左光标为移动光标&#xff09; 2、主机 A &#xff08;1…

UI设计速成课:理解模态窗口与非模态窗口的区别

我们日常所说的弹性框架是非常笼统的概念。我们习惯性地称之为对话框架、浮动层和提示条。弹性框架可以分为两种:模态弹性框架和非模态弹性框架。产品需要弹性框架来传递信息&#xff0c;用户需要弹性框架来接受反馈&#xff0c;但是没有经过推敲的弹出窗口设计很容易让用户感到…

mamba模型原理解读

本文主要讲解我对于2023年提出的mamba模型的理解和解读&#xff0c;mamba模型的提出为transformer模型存在的计算效率低下&#xff0c;需要大量时间运行程序提出了解决方案。提高了模型的运行效率和计算效率。我主要是根据下面这篇文章入手&#xff1a; 1.mamba模型是通过堆叠多…

STM32人工智能检测-筛选机器人

前言 本文描述了一种使用STM32进行机器人筛选的办法。筛选对象是我的粉s&#xff0c;删选办法是瞪眼法。 问题现象 每次当我的STM32 向外界发出一篇新的的报文&#xff0c;总能在1H之内得到focus&#xff0c;格式如下 [title][body][tail]于是我对各个focus 我报文的对象进…

香港身份的好处有哪些?这3个福利卷得内地人都在申请香港身份!

截止近期数据&#xff0c;香港身份申请人数达到29万&#xff0c;可见香港魅力依旧&#xff01; 我也是其中之一&#xff0c;去年才把香港优才临时身份卷下来的糖爸~ 我身边不少符合条件的朋友都想润去香港了&#xff0c;接近国际&#xff0c;又离家门近&#xff0c;谁不想去啊…

嵌入式技术学习——Linux环境编程(高级编程)——shell编程

一、shell编程的基础介绍 1.为什么要进行shell编程? 在Linux系统中&#xff0c;虽然有各种各样的图形化接口工具&#xff0c;但是shell仍然是一个非常灵活的 工具。 Shell不仅仅是命令的收集&#xff0c;而且是一门非常棒的编程语言。 您可以通过使用shell使大量的任务自动化…

QTday5 2024-06-19

作业要求&#xff1a; 1.思维导图 2.整理代码&#xff1a;TCP服务器 作业1&#xff1a;思维导图 作业2&#xff1a;整理代码 运行代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QList>…

Python 迭代器与生成器

迭代器 迭代器&#xff08;Iterator&#xff09;是一个可以记住遍历的位置的对象&#xff0c;该对象包含值的可计数数字&#xff0c;在Python当中&#xff1a;迭代器是实现迭代器协议的对象&#xff0c;它包含方法__iter__() 和 __next__() __iter__()方法 作用&#xff1a;…

Java语法糖写法

一、函数式接口 1、Function函数式接口&#xff1a;有一个输入参数&#xff0c;有一个输出 2、断定型接口&#xff1a;有一个输入参数&#xff0c;返回值只能是布尔值&#xff01; 3、Consumer 消费型接口&#xff1a;只有输入&#xff0c;没有返回值 4、Supplier供给型接口&a…

目标检测讲解

环境准备 pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple图片读取&画框 from skimage import io import matplotlib.pyplot as plt import matplotlib.patches as mpss io.imread(dogs.jpg)_, ax plt.subplots(ncols1, nrows1, figsize(6, 6))…

关于Java

关于Java Java语言关于并发JVM调优工具写在最后 Java语言 Java语言作为当下主流开发语言&#xff0c;其面向对象的开发模式以及一次编译多次运行&#xff0c;跨平台运行以及自动的垃圾回收机制可以说是给开发者节省了很大的时间用于逻辑功能的开发&#xff0c;那么在开发过程中…

通信系统的最佳线性均衡器(1)---维纳滤波线性均衡

本篇文章是博主在通信等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对通信等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在通信领域笔记&#xff1a;…

windows cmd bat 批处理脚本找到监听端口并并杀掉进程 nestat -ano

echo off rem 终止正在监听在端口8888上的进程 rem tokens5 表示第五个token for /f tokens5 %%p in (netstat -ano ^| findstr 8888) do ( set pid%%p ) echo xxxx %pid% rem xxxx TCP [::]:8888 [::]:0 LISTENING 2720 taskkill /pid %pid% /f if %errorlevel% equ 0 ( echo …

ARM功耗管理框架之PPU

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的PPU 二、PPU的结构与连接关系 三、PPU操作模式和电源模式及其之间的转…

如何准备大模型面试:迈向成功职业道路的关键一步

前言 在当今日新月异的科技领域中&#xff0c;大模型技术正以其卓越的智能和无限的可能性&#xff0c;吸引着越来越多的企业和求职者。面对大模型领域的职位面试&#xff0c;如何充分准备&#xff0c;展现自己的专业能力和潜力&#xff0c;成为了每位求职者关注的焦点。本文将…