1958.检查操作是否合法

解题思路

思路是对的,是否存在好线段,则需要从给定节点的8个方向出发,然后寻找是否存在。
方向的问题,则构建行列下标变化量,

C

注意在某个方向上的检查函数,可用step进行判断是否是当前节点的下一个节点,while控制边界。
如果当前节点的下一个节点是空格或者颜色等于当前节点,则false
如果不是当前节点的下一个节点,则判断颜色是否等于当前节点,反之则继续往前走。

class Solution {
public:bool checkMove(vector<vector<char>>& board, int rMove, int cMove, char color) {auto check = [&](int dx, int dy) -> bool{// 下一个节点位置int x = rMove + dx;int y = cMove + dy;int step = 1;while(x >= 0 && x<8 && y >=0 && y < 8){if (step == 1){if (board[x][y] == '.' || board[x][y] == color){return false;}}else{if (board[x][y] == '.'){return false;}if (board[x][y] == color){return true;}}step ++;x += dx;y += dy;}return false;};// int dx[8] = {};vector<int> dx = {1, 1, 0, -1, -1, -1, 0, 1};   // 行改变量vector<int> dy = {0, 1, 1, 1, 0, -1, -1, -1};   // 列改变量for (int k = 0; k < 8; k++){if (check(dx[k], dy[k])){// 检查该方向是否存在满足条件的return true;}}return false;}
};

c++中判断两个字符是否相等,可直接用==
判断两个字符串的大小,则使用strcmp()

Java

class Solution {public boolean checkMove(char[][] board, int rMove, int cMove, char color) {int[] dx = {1, 1, 0, -1, -1, -1, 0, 1};int[] dy = {0, 1, 1, 1, 0, -1, -1, -1}; for (int i = 0; i < 8; i++){if (check(board, rMove, cMove, color, dx[i], dy[i])){return true;}}return false;}public boolean check(char[][] board, int rMove, int cMove, char color, int dx, int dy){int x = rMove + dx;int y = cMove + dy;int step = 1;while (x >= 0 && x < 8 && y >= 0 && y < 8){if (step == 1){if (board[x][y] == '.' || board[x][y] == color){return false;}}else{if (board[x][y] == '.') return false;if (board[x][y] == color) return true;}step ++;x += dx;y += dy;}return false;}}

Python

class Solution:def checkMove(self, board: List[List[str]], rMove: int, cMove: int, color: str) -> bool:def check(dx:int, dy:int)->bool:x, y = rMove + dx, cMove + dystep = 1while 0 <= x < 8 and 0 <= y < 8:if step == 1:if board[x][y] == '.' or board[x][y] == color:return Falseelse:if board[x][y] == '.':return Falseif board[x][y] == color:return Truestep += 1x += dxy += dyreturn Falsedx = [1, 1, 0, -1, -1, -1, 0, 1]   # 行改变量dy = [0, 1, 1, 1, 0, -1, -1, -1]   # 列改变量for i in range(8):if check(dx[i], dy[i]):return Truereturn False

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

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

相关文章

关于同居关系析产纠纷相关裁判规则

1.同居期间双方共同所得的收入和购置的财产&#xff0c;按一般共有财产处理&#xff1b;同居期间为共同生产生活而形成的债权、债务&#xff0c;按共同债权、债务处理——王某某诉张某某同居关系析产纠纷案案例要旨&#xff1a;未办理结婚登记而以夫妻名义同居生活的&#xff0…

240707_昇思学习打卡-Day19-基于MindSpore通过GPT实现情感分类

240707_昇思学习打卡-Day19-基于MindSpore通过GPT实现情感分类 今天基于GPT实现一个情感分类的功能&#xff0c;假设已经安装好了MindSpore环境。 # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip…

Mysql数据库索引、事务相关知识

索引 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类型&#xff0c;各类索引有各自的数据结构实现 查看索引 show index from 表名;创建索引对于非主键、非唯一约束、非外键的字段&#…

基于贝叶斯优化的卷积神经网络-循环神经网络混合模型的的模拟股票时间序列预测(MATLAB R2021B)

将机器学习和深度学习方法运用到股市分析中, 不仅具有一定的理论价值, 也具有一定的实践价值。从理论价值上讲, 中国的量化投资技术&#xff08;投资观念、方法与决策等&#xff09;还不够成熟, 尚处在起步阶段, 能够将量化投资技术运用到投资决策中的公司寥寥无几。目前, 国内…

Spring框架:核心概念与Spring Boot微服务开发指南

引言 Spring框架是一个开源的Java平台,它提供了全面的基础设施支持,用于开发Java应用程序。Spring的核心概念包括依赖注入(DI)、面向切面编程(AOP)和事务管理。随着微服务架构的兴起,Spring Boot作为Spring框架的扩展,提供了一种快速开发独立微服务的方式。本文将详细介…

端口被占用,使用小黑框查杀

netstat -ano &#xff08;查看目前所有被占的端口&#xff09; netstat -ano|findstr " 8080" 查一下目前被占用的端口号 &#xff0c;目前我要查的端口号是&#xff1a;8080&#xff0c;注意 后面打8080的时候&#xff0c;要有空格&#xff0c;要不然报错 **task…

Zabbix 的部署和自定义监控内容

前言 一个完整的项目的业务架构包括 客户端 -> 防火墙 -> 负载均衡层&#xff08;四层、七层 LVS/HAProxy/nginx&#xff09; -> Web缓存/应用层&#xff08;nginx、tomcat&#xff09; -> 业务逻辑层(php/java动态应用服务) -> 数据缓存/持久层&#xff08;r…

C 预处理器

C 预处理器 概述 C预处理器是C语言编译过程中的一个重要环节&#xff0c;它对源代码进行预处理&#xff0c;以扩展和修改代码内容。预处理器的主要功能包括宏定义、文件包含、条件编译等。本文将详细介绍C预处理器的工作原理、功能及其在C编程中的应用。 C预处理器的工作原理…

C# List、LinkedList、Dictionary性能对比

数据结构性能对比 List、LinkedList、Dictionary 1. ArrayList &#xff08;List&#xff1a;前传&#xff09; ArrayList 是一个特殊数组&#xff0c; 通过添加和删除元素就可以动态改变数组的长度。 ArrayList集合相对于数组的优点&#xff1a; 支持…

C 语言总复习

总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构 (三个循环结构), 选择结构 (if 和 switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址。 4…

适合selenium的防自动化检测的方法

Selenium 是一个强大的自动化测试工具&#xff0c;能够模拟真实用户与网页的交互。针对您询问的适合在 Selenium 中实施的策略&#xff0c;以下是一些直接适用于或可以通过 Selenium 配置实现的方法&#xff1a; 修改User-Agent: 通过 Chrome 或 Firefox 的选项在启动时设置自…

操作系统智能助手OS Copilot评测报告

背景 如果不是朋友告知&#xff0c;我还不知道阿里云推出了【操作系统智能助手OS Copilot】这样一款产品。 我做系统运维的工作还是挺多的&#xff0c;知道系统运维工作的一些痛点&#xff1b;例如&#xff1a; Linux命令繁杂&#xff0c;想全部记住不太可能&#xff0c;多数…

软件测试《用例篇》

测试用例 测试用例的概念 测试用例是被测试人员向被测试系统发起的一组集合&#xff0c;包括测试环境&#xff0c;操作步骤&#xff0c;预期结果&#xff0c;测试数据等 使用测试用例的好处 使用测试用例进行测试的好处主要有&#xff1a;提高测试效率&#xff0c;降低测试的重…

YOLOV8改进DSConv分布移位卷积

基础干货&#xff1a;高效卷积&#xff0c;降内存提速度保精度 (eepw.com.cn) 各种卷积性能对比(Conv,DwConv,GhostConv,PConv,DCNV)-CSDN博客

WAWA鱼曲折的大学四年回忆录

声明&#xff1a;本文内容纯属个人主观臆断&#xff0c;如与事实不符&#xff0c;请参考事实 前言&#xff1a; 早想写一下大学四年的总结了&#xff0c;但总是感觉无从下手&#xff0c;不知道从哪里开始写&#xff0c;通过这篇文章主要想做一个记录&#xff0c;并从现在的认…

中国智能制造装备产业发展机遇

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料&#xff0c;请到智能制造online知识星球自行下载。 随着全球第四次工业革命的浪潮&#xff0c;智能制造装备产业…

刷leetcode中常用且有效的方法总结

刷题的时候经常会因为不知道一个方法多写很多行代码&#xff0c;既然有trick为何不用&#xff01;你问我眼中为何常含泪水&#xff0c;因为我忘记方法忘的深沉。那么我决定出一期&#xff01;刷题中常用且有效的方法们&#xff01;将会陆续补充,有补充欢迎评论区留言 目录 py…

C++ 函数高级——函数的默认参数

函数默认参数 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的 语法&#xff1a;返回值类型 函数名 &#xff08;参数 默认值&#xff09;{ } 示例&#xff1a; 正确代码&#xff1a; 运行结果&#xff1a;

昇思25天学习打卡营第13天|sea_fish

打开第13天。本次学习的内容为LLM原理和实践中基于MindSpore通过GPT实现情感分类的内容。记录学习的过程。 根据实验系统中的内容一步一步学习基于MindSpore通过GPT实现情感分类的整个过程。整个过程分为以下三个过程&#xff1a; 数据集加载与处理&#xff1a;数据集加载和数…

开源六轴协作机械臂myCobot 280接入GPT4大模型!实现更复杂和智能化的任务

本文已经或者同济子豪兄作者授权对文章进行编辑和转载 引言 随着人工智能和机器人技术的快速发展&#xff0c;机械臂在工业、医疗和服务业等领域的应用越来越广泛。通过结合大模型和多模态AI&#xff0c;机械臂能够实现更加复杂和智能化的任务&#xff0c;提升了人机协作的效率…