文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c)
棋盘上空格用 '.' 表示,白色格子用 'W' 表示,黑色格子用 'B' 表示。

游戏中每次操作步骤为:选择一个空格子,将它变成你正在执行的颜色(要么白色,要么黑色)。
但是,合法 操作必须满足:涂色后这个格子是 好线段的一个端点 (好线段可以是水平的,竖直的或者是对角线)。

好线段 指的是一个包含 三个或者更多格子(包含端点格子)的线段,线段两个端点格子为 同一种颜色 ,且中间剩余格子的颜色都为 另一种颜色 (线段上不能有任何空格子)。

你可以在下图找到好线段的例子:

给你两个整数 rMove 和 cMove 以及一个字符 color ,表示你正在执行操作的颜色(白或者黑),如果将格子 (rMove, cMove) 变成颜色 color 后,是一个 合法 操作,那么返回 true ,如果不是合法操作返回 false 。

示例 1:

输入:board = [
[".",".",".","B",".",".",".","."],
[".",".",".","W",".",".",".","."],
[".",".",".","W",".",".",".","."],
[".",".",".","W",".",".",".","."],
["W","B","B",".","W","W","W","B"],
[".",".",".","B",".",".",".","."],
[".",".",".","B",".",".",".","."],
[".",".",".","W",".",".",".","."]],
rMove = 4, cMove = 3, color = "B"
输出:true
解释:'.','W' 和 'B' 分别用颜色蓝色,白色和黑色表示。
格子 (rMove, cMove) 用 'X' 标记。
以选中格子为端点的两个好线段在上图中用红色矩形标注出来了。

示例 2:

输入:board = [
[".",".",".",".",".",".",".","."],
[".","B",".",".","W",".",".","."],
[".",".","W",".",".",".",".","."],
[".",".",".","W","B",".",".","."],
[".",".",".",".",".",".",".","."],
[".",".",".",".","B","W",".","."],
[".",".",".",".",".",".","W","."],
[".",".",".",".",".",".",".","B"]],
rMove = 4, cMove = 4, color = "W"
输出:false
解释:虽然选中格子涂色后,棋盘上产生了好线段,
但选中格子是作为中间格子,没有产生以选中格子为端点的好线段。提示:
board.length == board[r].length == 8
0 <= rMove, cMove < 8
board[rMove][cMove] == '.'
color 要么是 'B' 要么是 'W' 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-if-move-is-legal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 八个方向,依次检查,存在一个满足即可
class Solution {public:bool checkMove(vector<vector<char>>& board, int rMove, int cMove, char color) {vector<vector<int>> dir = {{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};for(int i = 0; i < 8; ++i){bool revColor = false;int x = rMove, y = cMove;while(inside(x+dir[i][0], y+dir[i][1])){if(board[x+dir[i][0]][y+dir[i][1]]=='.') // 遇到空格{break;}if(board[x+dir[i][0]][y+dir[i][1]] != color) //与起点相反的颜色revColor = true;else  // 起点相同的颜色{if (revColor == true)return true;break;}x += dir[i][0];y += dir[i][1];}}return false;}bool inside(int x, int y){return x>=0 && x<8 && y>=0 && y<8;}
};

4 ms 10.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1958. 检查操作是否合法(模拟)相关推荐

  1. Leetcode周赛5827. 检查操作是否合法

    题目描述 给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) .棋盘上空格用 '.' 表示,白色格子用 'W' 表示,黑色格子 ...

  2. 5827. 检查操作是否合法

    给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) .棋盘上空格用 '.' 表示,白色格子用 'W' 表示,黑色格子用 'B' ...

  3. 2022年制冷与空调设备运行操作考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年制冷与空调设备运行操作判断题为制冷与空调设备运行操作练习题模拟预测卷!2022年制冷与空调设备运行操作考试题库模拟考试平台操作依据制冷与空调设备 ...

  4. 2022制冷与空调设备运行操作考试题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年制冷与空调设备运行操作操作证考试题库系制冷与空调设备运行操作上岗证题库考前押题!2022制冷与空调设备运行操作考试题库模拟考试平台操作根据制冷与 ...

  5. 2022年R1快开门式压力容器操作试题及模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022R1快开门式压力容器操作判断题是R1快开门式压力容器操作全部考试题库仿真模拟预测!2022年R1快开门式压力容器操作试题及模拟考试根据R1快开门式 ...

  6. 2022年R1快开门式压力容器操作判断题模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022年R1快开门式压力容器操作复习题为R1快开门式压力容器操作考试题目考前押题!2022年R1快开门式压力容器操作判断题模拟考试平台操作依据R1快开门 ...

  7. Problem A: 判断操作是否合法(栈和队列)

    Problem A: 判断操作是否合法(栈和队列) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 67  Solved: 22 Description ...

  8. 2022年义乌医院三基考试临床检查多选专项模拟题及答案

    题库来源:优题宝公众号 2022年义乌医院三基考试临床检查多选专项模拟题及答案,由优题宝公众号根据最新临床检查大纲与历年真题汇总编写,包含临床检查常考重点题型与知识点,有助于考生复习备考医院三基考试, ...

  9. 入栈和出栈操作的合法序列判定

    入栈和出栈操作的合法序列判定 [问题描述]假设以I和O分别表示入栈和出栈操作,栈的初态和终态均为空.入栈和出栈的操作序列表示为仅由I和O组成的序列.请编写程序判断一个给定序列是否合法. [输入形式]给 ...

最新文章

  1. Ferris教程学习笔记:js示例2.13 简易JS年历
  2. seaborn可视化散点图并自定义图像的标题(title)以及自定义标题的字体大小(Set a Title to a Seaborn Plot)
  3. boost spirit的简单使用
  4. Linux 集群时钟同步
  5. linux中文件名有英文括号的问题
  6. 3_8 StateMode 状态模式
  7. 深入浅出深度学习(一)深度学习的发展
  8. Taro+react开发(61) 一条虚线
  9. Linux mount挂载和umont卸载U盘
  10. 用户需求分析:背后隐藏的门槛
  11. Gitblit Git 无密码 clone pull SSH Key 生成
  12. mfp服务器控制中心,固网1008MFP驱动
  13. 计算机英语(第四版)
  14. 音频ncm格式文件转mp3,ncm转mp3
  15. Arduino应用开发——手机APP控制LED
  16. 6. ROS编程入门--路径跟随(Trajectory following)
  17. 一、Filter的配置项dispatcher
  18. 【笔记】Jenkins- 解决 “Error 403 No valid crumb was included in the request“
  19. 浅谈互联网电商平台都有哪些模式
  20. JRebel and XRebel idea热部署插件的使用

热门文章

  1. replaceselection();java'_Java JTextComponent.replaceSelection方法代码示例
  2. 中国首台千万亿次超级计算机,中国首台千万亿次超级计算机首批设备开始试用...
  3. 三星+android+7.0+自动纠正单词,升级党必看!三星S/Note系列更新Android 7.0指南
  4. c语言的class,Objective-C中Class的本质
  5. 驱动框架2——内核驱动框架中LED的基本情况、初步分析
  6. fir fpga 不同截止频率_一种新的FIR滤波器系数量化方法
  7. 最近在ST公司的STxp70的dsp平台上开发音频codec模块.
  8. matplotlib绘制矢量图像(svg),pdf and ps文件
  9. OpenGL学习笔记-坐标系统
  10. linux这样去掉文件里高亮字体