LeetCode 1958. 检查操作是否合法(模拟)

文章目录

    • 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阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

php获取周几,php怎么获得星期几

php怎么获得星期几2021-03-07 15:06:02php获得星期几的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后定义一个数组&#xff1b;最后通过“echo "星期".$weekarray[date("w")];”方式获得星期几即可。本文操作环境&#xff1a;Windows7系统、PH…

电脑假死卡的动不了_最近遇到奇怪电脑问题(实战篇)

点击蓝字关注我们话不多扯&#xff0c;说事最近遇到奇怪电脑问题装的是7系统32位开机可以进入系统插着网线开机&#xff0c;就假死拔掉网线开机&#xff0c;正常&#xff0c;然后插上网线依旧正常再带着网线关机&#xff0c;开机后又成假死假死后拔下网线依旧恢复不了必须是不插…

HTTP Post

// testHttp003.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h"// webrequest.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <string> #include <fstream> #include <winsock2.h> #include <std…

LeetCode 1961. 检查字符串是否为数组前缀

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个字符串数组 words &#xff0c;请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 &#xff0c;需要满足&#xff1a;s 可以由 words 中的前 k&#xff08;k 为 正数 &#xff09;个字符…

php怎样加速,php 提速

php 提速2007-08-13 10:06这篇杂文翻译整理自网络各路文档资料(见最末的参考资料)&#xff0c;尤其是 Ilia Alshanetsky (佩服之至) 在多个 PHP 会议上的演讲&#xff0c;主要是各类提高 PHP 性能的技巧。为求精准&#xff0c;很多部分都有详细的效率数据&#xff0c;以及对应的…

ios UIScrollView 基础属性

转 UIScrollView 原理 在滚动过程当中&#xff0c;其实是在修改原点坐标。当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件&#xff0c;那么 scroll view 发送 tracking events 到被点击的 subview。假如在计时器到点前发…

LeetCode 1962. 移除石子使总数最小(优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。 另给你一个整数 k &#xff0c;请你执行下述操作 恰好 k 次&#xff1a; 选出任一石子堆 piles[i] &#xff0c;并从中 移除…

ubuntu自定义安装里怎么选_中央空调到底应该怎么选?小户型也能安装中央空调?行家说实话了...

▲ 点击蓝字“建通舒适家”&#xff0c;你想知道的空调问题&#xff0c;答案全在这里啦&#xff01;中央空调到底应该怎么选&#xff1f;小户型也能安装中央空调&#xff1f;行家说实话了现在业主装修大多都是对中央控空调一知半解&#xff0c;出现很多种的情况就是&#xff1a…

php辅助框架,【PHP开发框架】Laravel框架中辅助函数:optional ()函数的介绍

laravel框架中的辅助函数有很多&#xff0c;那么&#xff0c;在 Laravel 新版本中又有什么非常好用的辅助函数呢&#xff1f;接下来的这篇文章中&#xff0c;ki4网将给大家介绍一个非常有用的辅助方法&#xff1a;optional()函数&#xff0c;这个函数的用处到底是什么呢&#x…

python 清除字符串中的 emoji 表情

https://pypi.org/project/emoji/ pip install emoji字符串中间有 emoji 表情&#xff0c;替换掉。 text "&#x1f430;贝贝有点甜&#x1f430;" res emoji.demojize(text) # :rabbit_face:贝贝有点甜:rabbit_face:# 正则表达式替换为 r"想换的字符串&quo…

Linux CentOS7/RHEL7关闭ctrl+alt+delete功能键

这是本人测试的经过&#xff0c;纯粹记录来看看&#xff0c;最终解决方法在最后面&#xff0c;中间讲的是遇到的一些坑&#xff0c;可以略过不看&#xff01;&#xff01; 本人操作经验&#xff0c;转载请表明出处&#xff1a;http://www.cnblogs.com/huangjc/p/4536620.html L…

三角形css_纯 CSS 实现绘制各种三角形(各种角度)

一、前言三角形实现原理&#xff1a;宽度width为0&#xff1b;height为0&#xff1b;&#xff08;1&#xff09;有一条横竖边&#xff08;上下左右&#xff09;的设置为border-方向&#xff1a;长度 solid red&#xff0c;这个画的就是底部的直线。其他边使用border-方向&#…

java 排秩,lamd(java lambda表达式)

lamb n.羔羊&#xff0c; 小羊羔羊肉[皮](对孩子等的爱称)好宝宝&#xff0c; 小乖乖年幼、天真无邪的人&#xff1b; 羔羊般柔弱[温顺]的人[俚]容易上当的人(尤指在证券交易方面)[the Lamb ]【宗.lamd是什么意思land n. 国土&#xff1b;陆地&#xff1b;地面lamb n. 羔羊&…

LeetCode 1826. 有缺陷的传感器(枚举)

文章目录1. 题目2. 解题1. 题目 实验室里正在进行一项实验。为了确保数据的准确性&#xff0c;同时使用 两个 传感器来采集数据。 您将获得2个数组 sensor1 and sensor2&#xff0c;其中 sensor1[i] 和 sensor2[i] 分别是两个传感器对第 i 个数据点采集到的数据。 但是&#…

今天携程出事了:让我们来学习下http的响应码

就在今天&#xff0c;2015年5月28日&#xff0c;中国最大的旅游机票预订网站--携程网粗大事了。据传携程网的数据库被人物理删除了&#xff0c;而容灾备份的数据又无法正常使用&#xff0c;服务器全面遭受瘫痪。每小时给携程带来的损失约100万美元。巴拉巴拉&#xff0c;作为中…

java 删除txt,如何从.txt文件中删除2个值

if "A" in columns and int(columns[5]) < int(columns[3]):print(columns)print (columns[3]) - (columns[5])我在这做错了什么&#xff1f;不记得我最近开始编码 .这是完整的代码&#xff1a;import csvFILE_NAME "paintingJobs.txt" #I use this so…

LeetCode 1708. 长度为 K 的最大子数组

文章目录1. 题目2. 解题1. 题目 在数组 A 和数组 B 中&#xff0c;对于第一个满足 A[i] ! B[i] 的索引 i &#xff0c;当 A[i] > B[i] 时&#xff0c;数组 A 大于数组 B。 例如&#xff0c;对于索引从 0 开始的数组&#xff1a; [1,3,2,4] > [1,2,2,4] &#xff0c;因…

CSS3(animation, trasfrom)总结

CSS3(animation, trasfrom)总结 1. Animation 样式写法: 格式: -浏览器内核-keyframes 样式名 {} 标准写法(chrome safari不支持 keyframes [样式名] { 0% {left: 10px ; top : 20px;} 50% {left: 20px ; top : 30px;} 100% {left: 10px ; top : 20px;} }; Firefox -mz-keyfra…

LeetCode 1554. 只有一个不同字符的字符串(枚举)

文章目录1. 题目2. 解题1. 题目 给定一个字符串列表 dict &#xff0c;其中所有字符串的长度都相同。 当存在两个字符串在相同索引处只有一个字符不同时&#xff0c;返回 True &#xff0c;否则返回 False 。 进阶&#xff1a;你可以以 O(n*m) 的复杂度解决问题吗&#xff1…

matlab多径信道模型,多径时变信道模型的仿真与性能分析课程设计(样例3)

《多径时变信道模型的仿真与性能分析课程设计.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《多径时变信道模型的仿真与性能分析课程设计》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、形与输入信号波形越接近。因为信道幅频特性不理…