5827. 检查操作是否合法

给你一个下标从 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
image.png

解题思路

根据rMove 和 cMove 以及color,从board[rMove][cMove]向8个方向遍历,当出现遍历到空格子的情况,就不是合法的,或者当遍历到出现color的格子,但是线段中间没有别的颜色,那么也不是合法。

代码

class Solution {int[][] dir=new int[][]{{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}};public boolean checkMove(char[][] board, int rMove, int cMove, char color) {for (int[] d : dir) {int x=rMove+d[0],y=cMove+d[1],len=0;boolean flag=false;while (x>=0&&x<8&&y>=0&&y<8){if (board[x][y]=='.'){break;}if (board[x][y]==color){if (len>=1)return true;break;}x=x+d[0];y=y+d[1];len++;}}return false;}
}

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

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

相关文章

团队的远程管理_远程团队指南:如何管理您的远程软件开发团队

团队的远程管理Guides to help you work remotely seem to have swept through the Internet these days. 这些天来&#xff0c;帮助您远程工作的指南似乎席卷了Internet。 Do this, avoid that, stay productive, and all those run-of-the-mill tips we’ve already tried o…

JS 正则 钱

function ValidateIsDecial(sValue) {return (!sValue && !!!sValue && /^[0-9]{1,10}(\.[0-9]{0,2})?$/.test(sValue)); };验证 decimal(12,2) 小数点前允许10位,小数点后允许2位 1234567890 true 12345678901 false 0123456789 true 01234567891 false 123.…

5193. 删除字符使字符串变好

5193. 删除字符使字符串变好 一个字符串如果没有 三个连续 相同字符&#xff0c;那么它就是一个 好字符串 。 给你一个字符串 s &#xff0c;请你从 s 删除 最少 的字符&#xff0c;使它变成一个 好字符串 。 请你返回删除后的字符串。题目数据保证答案总是 唯一的 。 示例 …

2020计算机顶级大会_2020年顶级远程调试工具

2020计算机顶级大会When it comes to debugging, the tool you use is extremely important and can determine how easy is is to fix problems within your code. 在调试方面&#xff0c;您使用的工具非常重要&#xff0c;可以确定在代码中修复问题的难易程度。 In the earl…

BZOJ5292 洛谷4457 LOJ2513:[BJOI2018]治疗之雨——题解

https://www.lydsy.com/JudgeOnline/problem.php?id5292 https://www.luogu.org/problemnew/show/P4457 https://loj.ac/problem/2513 你现在有m1个数&#xff1a;第一个为p&#xff0c;最小值为0&#xff0c;最大值为n&#xff1b;剩下m个都是无穷&#xff0c;没有最小值或最…

PHP--------微信网页开发实现微信扫码功能

今天说说微商城项目中用到的扫一扫这个功能&#xff0c;分享一下&#xff0c;希望对各位有所帮助。 前提&#xff1a;要有公众号&#xff0c;和通过微信认证&#xff0c;绑定域名&#xff0c;得到相应信息&#xff0c;appid&#xff0c;appsecret等。 微信开发文档&#xff1a;…

313. 超级丑数

超级丑数 是一个正整数&#xff0c;并满足其所有质因数都出现在质数数组 primes 中。 给你一个整数 n 和一个整数数组 primes &#xff0c;返回第 n 个 超级丑数 。 题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。 示例 1&#xff1a; 输入&#xff1a;n 12,…

初创公司股本结构_我如何向初创公司的开发团队添加一些结构-以及从过程中学到的东西

初创公司股本结构Until recently, Id spent the last 4 years of my career at FinTech start-ups. Id always worked for smaller companies, and being at a start-up was the next logical step in looking for roles where I could make the biggest difference. 直到最近…

拿什么拯救你,我的面试之——从零打卡刷Leetcode(No.003)

写在前边&#xff1a;小詹一直觉得自己编程能力不强&#xff0c;想在网上刷题&#xff0c;又怕不能坚持。不知道有木有和小伙伴和小詹一样想找个人一起刷题呢&#xff1f;欢迎和小詹一起定期刷leetcode&#xff0c;每周一周五更新一题&#xff0c;每一题都吃透&#xff0c;欢迎…

146. LRU 缓存机制

146. LRU 缓存机制 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回…

[SQL] 请教一下 count里面有case when 一般情况下啥时候用

http://www.itpub.net/forum.php?modviewthread&tid1810967 问题: 比如 count(case when pday_id${deal_date} then 1 end) 我有点想不明白具体什么情况下count&#xff08;&#xff09; 这个小括号里面还要用case when 大家做BI统计的时候一般什么情况用啊 还有个…

路由器架设虚拟服务器让外网访问到本地网站

确定电脑与路由器正确连接&#xff0c;并且已连至互联网。在地址栏中输入192.168.0.1回车&#xff0c;输入用户名密码&#xff0c;进入路由器主界面。 然后点击左侧菜单中的“虚拟服务器”&#xff0c;——“端口段映射”打开“端口段映射”界面。 由于网站用的是80端口&#x…

vue项目示例代码git_您应该了解的5个Git命令以及代码示例

vue项目示例代码gitIve used Git for some years now, and I still find myself googling how to do some basic tasks. So this article is my attempt to learn how to do some of these things by writing about them. And even if I still forget, at least Ill have a ref…

413. 等差数列划分

413. 等差数列划分 如果一个数列 至少有三个元素 &#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。 例如&#xff0c;[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums &#xff0c;返回数组 nums 中所有为等差数组…

山羊与汽车游戏的实验算法

实验1&#xff1a; function shuffle(target) {var j, x, i target.length;for (; i > 0; j parseInt(Math.random() * i), x target[--i], target[i] target[j], target[j] x) {}return target }function removeAt(target, index) {return !!target.splice(index, 1).…

selenium模块

selenium模块 阅读目录 一 介绍二 安装三 基本使用四 选择器五 等待元素被加载六 元素交互操作七 其他八 项目练习一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题selenium本质是通过驱动浏览器&#xff0c;完…

关闭iphone来电mac_如何在Mac和iPhone上关闭通用剪贴板切换(以及为什么要禁用此功能)

关闭iphone来电macIm about to tell you something that will shock you, and probably make you very angry. I hope you wont hate me for it. Here goes.我正要告诉您一些令您震惊的事情&#xff0c;并可能使您非常生气。 我希望你不会为此而恨我。 开始。 If you are an i…

关于tomcat Post 数据参数的问题

2019独角兽企业重金招聘Python工程师标准>>> POST请求本身并未限制传入参数大小&#xff0c;是tomcat 容器设置了接收参数大小的限制。修改server.xml <Connector port"8080" protocol"HTTP/1.1" connectionTimeout"2000" red…

iOS:通信录(完成)(18-01-18更)

1、读取通信录 1&#xff09;、9.0以前&#xff1a;AddressBook 2&#xff09;、9.0以后&#xff1a;Contacts 2、调用通信录UI&#xff08;不弄&#xff09; 1&#xff09;、9.0以前&#xff1a;AddressBookUI 2&#xff09;、9.0以后&#xff1a;ContactsUI 3、参考 0、写在前…

如何在React Native和Firebase中设置Google登录

Google sign-in is a great login feature to offer to your apps users. It makes it easier for them to create an account and sign in. Google登录是一项出色的登录功能&#xff0c;可为您的应用程序用户提供。 这使他们更容易创建帐户并登录。 And whats even better, F…