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

刚做网站和搜出来的不一样响应式外贸建站

刚做网站和搜出来的不一样,响应式外贸建站,做二手手机交易网站,html5结构的网站【LetMeFly】2596.检查骑士巡视方案 力扣题目链接:https://leetcode.cn/problems/check-knight-tour-configuration/ 骑士在一张 n x n 的棋盘上巡视。在有效的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。…

【LetMeFly】2596.检查骑士巡视方案

力扣题目链接:https://leetcode.cn/problems/check-knight-tour-configuration/

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

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

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

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

 

示例 1:

输入:grid = [[0,11,16,5,20],[17,4,19,10,15],[12,1,8,21,6],[3,18,23,14,9],[24,13,2,7,22]]
输出:true
解释:grid 如上图所示,可以证明这是一个有效的巡视方案。

示例 2:

输入:grid = [[0,3,6],[5,8,1],[2,7,4]]
输出:false
解释:grid 如上图所示,考虑到骑士第 7 次行动后的位置,第 8 次行动是无效的。

 

提示:

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

方法一:排序 + 模拟

创建一个indices数组,indices[i]代表第i步要跳到的位置(只需要遍历一遍grid数组即可完成indices数组)。

使用两个变量 n o w X nowX nowX n o w Y nowY nowY,代表当前的位置。

遍历indices数组,如果下一个位置 和 当前位置不是“日”字型,则返回false。

最终返回true。

细节描述:

Q1: 如何确定相邻两个位置是否是日字型?

A1: 看“横坐标之差×纵坐标之差”是否等于2。

Q2: 如何优雅地判断骑士是否由“左上角”出发?特判grid[0][0]是否为0不够优雅。

A2: 初始位置可以设置为(-2, -1),这样首个位置必须是(0, 0)才满足日字型。

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 s i z e ( g i r d ) = n × n size(gird) = n\times n size(gird)=n×n
  • 空间复杂度 O ( n 2 ) O(n^2) O(n2)

AC代码

C++
typedef pair<int, int> pii;
class Solution {
public:bool checkValidGrid(vector<vector<int>>& grid) {int n = grid.size();vector<pii> indices(n * n);for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {indices[grid[i][j]] = {i, j};}}int nowX = -2, nowY = -1;for (int i = 0; i < n * n; i++) {int nextX =indices[i].first, nextY = indices[i].second;if (abs(nowX - nextX) * abs(nowY - nextY) != 2) {return false;}nowX = nextX, nowY = nextY;}return true;}
};
Python
# from typing import Listclass Solution:def checkValidGrid(self, grid: List[List[int]]) -> bool:n = len(grid)indices = [0] * n ** 2for i in range(n):for j in range(n):indices[grid[i][j]] = [i, j]nowX, nowY = -2, -1for i in range(n * n):nextX, nextY = indices[i]if abs(nextX - nowX) * abs(nextY - nowY) != 2:return FalsenowX, nowY = indices[i]return True

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132847346

http://www.yayakq.cn/news/736870/

相关文章:

  • 招聘 负责网站开发中国企业网银
  • 网站建设比较好公司wordpress分类归档
  • 永川区网站建设咨询西安公司官网制作
  • 连衣裙一起做网站高端 网站设计公司
  • 金华网站建设方案开发用dw做淘客网站的步骤
  • 网站建设属于全国黄页大全
  • php建站模板商城入口
  • 科技部做财务决算的网站是什么网站购买云空间
  • 室内设计公司排名国外seo诊断服务
  • 企业网站事例网站域名查询工具
  • 建站网站公司调查网站建设与维护蒋勇从
  • 网站建设王滨1983常州外贸网站建设公司
  • 专业网站建设流程安徽网页设计培训
  • 在线解压网站服务器搭建云电脑
  • 做亚马逊产品测评的网站网站怎么做等级保护
  • 在百度做网站需要什么资料wordpress如何连接到数据库连接
  • 二手车网站程序域名与ip地址的关系
  • 做音乐网站要求建设网站技术公司电话
  • 网站开发 实名认证需要备案吗网站建设主机
  • 在哪里做马可波罗网站私人为别人做网站违法问题
  • 深圳制作网站建设的企业前端登陆页面设计模板
  • 做网站的任务书app线下推广怎么做
  • 做网站如何提需求软件工程名词解释
  • 怎么做移动端的网站推广公司服务内容
  • 郴州网站建设制作网站名称如何设置
  • 网站开发能怎么赚钱网站建设 微盘下载
  • 网站SEO优化实训wordpress深度优化主题
  • 广东省住房与城乡建设厅网站网站域名做301
  • 建设公司网站的必要性wordpress 载入特别慢
  • 做网站行业如何跟客户交流广州网站设计公司招聘