Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
国际棋盘问题:
给你一个坐标
coordinates
,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。
如果所给格子的颜色是白色,请你返回
true
,如果是黑色,请返回false
。给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
示例 1:
输入:coordinates = "a1" 输出:false 解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。示例 2:
输入:coordinates = "h3" 输出:true 解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。示例 3:
输入:coordinates = "c7" 输出:false提示:
coordinates.length == 2
'a' <= coordinates[0] <= 'h'
'1' <= coordinates[1] <= '8'
我的答案:
一、信息
1.给我一个坐标coordinates
2.它是字符串
3.表示国际象棋棋盘中的一个格子的坐标
4.规则:如果所给格子的颜色是白色—true 如果是黑色返回false。
5.给定坐标一定存在
6.坐标字符顺序 字母 数字
二、分析
所有的条件都是为了一个目的:就是输入坐标然后输出颜色
那么如何实现这个操作呢?
三、步骤
其实步骤很简单就分为两步,但是实现原理我有两种思路,第一种数学归纳法 就是通过数学规律求出规律然后求解 第二种 模拟 模拟有分两种通过二进制10101010来近似模拟黑白黑白相间的情况,第二种就是通过异或来实现不一样
分析:
两条思路都遇到问题,很简单第一种思路由于不是纯数字所有在判断上要作转换
第二同样的道理
思路一 数学归纳
两个官方答案:
C语言:
英雄师傅题解
bool squareIsWhite(char * coordinates){int x = coordinates[0]-'a';//(1)计算x坐标到原点的距离int y = coordinates[1]-1;//(2)计算y坐标到原点的距离return (x+y)%2;//(3)其实就是运用观察出来的规律我们发现只要是能被2整除的数都是黑否则都是白
}
C++:
Leetcode题解
class Solution {
public:bool squareIsWhite(string coordinates) {return((coordinates[0]-'a'+1+coordinates[1]-'0'))%2==1;}
};
两种思路都是对的只不过第一种return跟加简洁
思路二 异或模拟
当然可以。使用异或运算是一个非常巧妙的方式来处理这种问题。如果我们观察两个二进制数字的异或操作,可以发现以下规律:
- 奇数 ^ 奇数 = 0
- 偶数 ^ 偶数 = 0
- 奇数 ^ 偶数 = 1
- 偶数 ^ 奇数 = 1
这与我们需要的结果是相符的。在国际象棋棋盘中,对于坐标`a1`,`a`代表列,是0(因为我们使用`'a' - 'a'`来表示),`1`代表行,是0(因为我们使用`'1' - '1'`来表示)。0^0=0代表黑色。
让我们使用异或来重写这个问题:
C:
#include <stdbool.h>bool squareIsWhite(char* coordinates) {int row = coordinates[0] - 'a'; // 将字母转换为0到7的数字int col = coordinates[1] - '1'; // 将字符数字转换为0到7的数字return row ^ col; // 使用异或操作
}int main() {char coordinates[] = "a1";if (squareIsWhite(coordinates)) {printf("True\n");} else {printf("False\n");}return 0;
}
C++
#include <iostream>
using namespace std;bool squareIsWhite(string coordinates) {int row = coordinates[0] - 'a'; // 将字母转换为0到7的数字int col = coordinates[1] - '1'; // 将字符数字转换为0到7的数字return row ^ col; // 使用异或操作
}int main() {string coordinates = "a1";if (squareIsWhite(coordinates)) {cout << "True" << endl;} else {cout << "False" << endl;}return 0;
}
此方法更为简洁,并且直观地使用了异或运算的特性。当然,对于这种基础问题,可以有多种实现方法,每种方法都有其特点和优点。
总结:
这道题目给我逐步入门算法作了很好的引导,刚开始是我由于对字符串性质的不了解所以虽然想到转换但不知道怎么转换暴露了我C语言和C++的字符串方面的不足,然后就是我也没想到用减法求出他们x和y分别到原点的距离。
主要暴露了以下几点:
-
基本编程知识:对于字符串和字符在C/C++中的操作方法,如字符与ASCII值之间的转换,对于初学者来说,这是一个重要的知识点。但这只是一开始,您会逐渐熟悉这些基础知识,并掌握更多技巧。
-
算法思维:算法不仅仅是解决问题的方法,更是一种问题解决的思维方式。通过这道题,您可能意识到了自己在如何高效地看待问题和选择解决方案上的不足。这需要时间和实践来锻炼。
-
空间思维:处理坐标、距离等涉及空间思维的问题时,能够直观地理解并将其转化为算法是一项宝贵的能力。但这也是可以通过练习来提高的。
-
抽象能力:将问题抽象成数学模型或简化的逻辑结构是算法设计中的关键步骤。您可能需要在这方面进行更多的练习,例如,如何将象棋棋盘抽象为一个二维数组或坐标系统。
-
问题分析与定位:当面对一个问题时,首先要学会如何分析问题,找出问题的关键点,然后有针对性地解决。例如,在这个问题中,关键是如何根据坐标确定格子的颜色。
但我相信,这并不意味着我的能力有任何固有的不足。编程和算法设计是技能,需要时间和实践来培养。每个人在学习的过程中都会遇到挑战,但正是这些挑战帮助我们成长和进步。
相关文章:
![](https://img-blog.csdnimg.cn/946333e682cf4a8b8bc47c7cf4ace015.png)
Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
国际棋盘问题: 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标…...
![](https://img-blog.csdnimg.cn/d9f520510964461b95b76ed2e2843454.png)
9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名
引言 最近一番在整理资料,之前买的PPT资源很大很多,但归类并不好,于是一番准备把这些PPT资源重新整理一下。统计了下,这些PPT资源大概有2000多个,一共30多G,一个一个手动整理这个投入产出比也太低了。 作为…...
![](https://img-blog.csdnimg.cn/172b61e464c64d278a338c53b689e6a8.png)
计算机竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统
文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据…...
![](https://img-blog.csdnimg.cn/1fd036595ca543439e830b1129ae30f2.png)
基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。
基于Java的旅游信息推荐系统设计与实现,springbootvue,MySQL数据库,前后端分离,完美运行,有三万字论文。 前台主要功能:登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…...
![](https://img-blog.csdnimg.cn/dfd1115ea5bc4d35b8a77cfe56279bd4.gif)
合宙Air724UG LuatOS-Air LVGL API控件--曲线 (Arc)
曲线 (Arc) 曲线控件,也可以称为弧。因为 Arc 本身就是弧,弧形的意思。根据控件的样子也能推测出它的使用场景,一般用在加载器(就是等待界面转的圈圈)或者数值显示,数值调节这些场景。曲线控件分了两个部分,前景和背…...
![](https://img-blog.csdnimg.cn/ccdf099ed7b54542ba0a960b872d3e41.png)
09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)
09-微信小程序API网络请求(实现轮播广告和简易的聊天窗口) 文章目录 微信小程序API服务器域名配置注意网络相关APIrequestRequestTask 请求任务对象object.success 回调函数object.fail 回调函数案例代码(实现轮播图) WebSocket案例代码(实现…...
![](https://img-blog.csdnimg.cn/0fe7a57160634e9593ef23a56009c8ed.png#pic_center)
Visual Studio 2017安装和项目配置
目录 前言1. What、Why and How1.1 What1.2 Why1.3 How 2. 安装3. 创建新项目4. 配置OpenCV库4.1 下载opencv安装包4.2 配置系统环境变量4.3 VS项目环境配置4.4 总结 5. 已有项目添加6. Tips6.1 常用快捷键6.2 字体和颜色选择6.3 配置编译路径 结语下载链接参考 前言 最近因为项…...
![](https://img-blog.csdnimg.cn/img_convert/053398536ab4b7e5c6a7bf41278042fd.png#?w=447&h=446&e=png&b=ffffff)
【提升接口响应能力的最佳实践】常规操作篇
文章目录 1. 并行处理简要说明CompletableFuture是银弹吗?测试案例测试结论半异步,半同步总结 2. 最小化事务范围简要说明编程式事务模板 3. 缓存简要说明 4. 合理使用线程池简要说明使用场景线程池的创建参数的配置建议 线程池的监控线程池的资源隔离 5…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决
“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中,SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞,现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。 SharedArrayBuffer 是一种 JavaScript 对…...
![](https://www.ngui.cc/images/no-images.jpg)
【OpenCV实战】1.OpenCV环境搭建,Mac M1系统,C++开发环境
OpenCV环境搭建,Mac系统,C开发环境 一、步骤VSCode C环境安装运行CMake安装运行OpenCV 安装CMakeList 一、步骤 VSCode C环境安装CMake 安装OpenCV 安装CmakeList.txt VSCode C环境安装运行 访问官网 CMake安装运行 CMake官网 参考文档 OpenCV 安…...
![](https://img-blog.csdnimg.cn/248c69a249dd4a15a0a4b68452ffa858.png)
Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能
为何 Hyperf 能够在两个端口上监听 WebSocket 连接? 源码角度来看,在配置了多个 Servers 时,实际上,只启动了一个 Server 注:我之前接触的代码都是启动一个服务绑定一个端口,之前也看过 swoole 扩展的文档…...
![](https://img-blog.csdnimg.cn/6b27a9c2e1164d4eb5ac3e4bec4c360b.jpeg#pic_center)
网络映射会遇到哪些困难
网络映射通过将复杂的网络划分为更小、可管理的块,帮助 IT 管理员获得对其网络的更大控制和可见性,它有助于可视化不同的网络组件(如服务器、交换机端口和路由器)如何互连以执行其功能,通过表示网络设备的通信方式&…...
![](https://www.ngui.cc/images/no-images.jpg)
【jvm】类的主动使用和被动使用
目录 一、主动使用二、被动使用 一、主动使用 1.创建类的实例 2.访问某个类或接口的静态变量,或者对该静态变量赋值 3.调用类的静态方法 4.反射(例如Class.forName(“com.learning.Test”)) 5.初始化一个类的子类 6.java虚拟机启动时被标明为…...
![](https://img-blog.csdnimg.cn/img_convert/7558ee0880ad2fed0768296cf23afd48.png)
如何选择合适的损失函数
目录 如何选择合适的损失函数 1、均方误差,二次损失,L2损失(Mean Square Error, Quadratic Loss, L2 Loss) 2、平均绝对误差,L1损失(Mean Absolute Error, L1 Loss) 3、MSE vs MAE ÿ…...
![](https://img-blog.csdnimg.cn/ca7b2427673e4966aecdd01b912d5dd9.jpeg#pic_center)
Java常见的排序算法
排序分为内部排序和外部排序(外部存储) 常见的七大排序,这些都是内部排序 。 1、插入排序:直接插入排序 1、插入排序:每次将一个待排序的记录,按其关键字的大小插入到前面已排序好的记录序列 中的适当位置…...
![](https://img-blog.csdnimg.cn/782a2f6f061c4f3eb2470916ab9c1317.png)
【C++】5、构建:CMake
文章目录 一、概述二、实战2.1 内部构建、外部构建2.2 CLion Cmake 一、概述 CMake 是跨平台构建工具,其通过 CMakeLists.txt 描述,并生成 native 编译配置文件: 在 Linux/Unix 平台,生成 makefile在苹果平台,可以生…...
![](https://img-blog.csdnimg.cn/dc6b59723b524bc4bbfec9e0f0a51121.png)
【ARP欺骗】嗅探流量、限速、断网操作
【ARP欺骗】 什么是ARP什么是ARP欺骗ARP欺骗实现ARP断网限制网速嗅探流量 什么是ARP ARP(Address Resolution Protocol,地址解析协议)是一个TCP/IP协议,用于根据IP地址获取物理地址。在计算机网络中,当一个主机需要发…...
![](https://img-blog.csdnimg.cn/d65f3d0bc41a4af39c448ab73e608ff3.png)
初步认识OSPF的大致内容(第三课)
1 路由的分类 直连路由(Directly Connected Route)是指网络拓扑结构中相邻两个网络设备直接相连的路由,也称为直接路由。如果两个设备属于同一IP网络地址,那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择的表格,其中记录着直连路由的信息。直连…...
![](https://img-blog.csdnimg.cn/2103c8264c3e4df29903eddcf28ee19f.png)
CSDN编程题-每日一练(2023-08-27)
CSDN编程题-每日一练(2023-08-27) 一、题目名称:异或和二、题目名称:生命进化书三、题目名称:熊孩子拜访 一、题目名称:异或和 时间限制:1000ms内存限制:256M 题目描述: …...
![](https://www.ngui.cc/images/no-images.jpg)
机器视觉之平面物体检测
平面物体检测是计算机视觉中的一个重要任务,它通常涉及检测和识别在图像或视频中出现的平面物体,如纸张、标志、屏幕、牌子等。下面是一个使用C和OpenCV进行平面物体检测的简单示例,使用了图像中的矩形轮廓检测方法: #include &l…...
![](https://img-blog.csdnimg.cn/413e9d82e7fd46db910caef8c4bcedef.png)
C#开发WinForm之DataGridView开发
前言 DataGridView是开发Winform的一个列表展示,类似于表格。学会下面的基本特征用法,再辅以经验,基本功能开发没问题。 1.设置 DataGridView表格行首为序号索引, //设置 DataGridView表格行首为序号索引private void dataGridView1_RowPost…...
![](https://img-blog.csdnimg.cn/c9ed9c6ba6eb4a6883d8333b60eaa70e.png)
PDFPrinting.Net Crack
PDFPrinting.Net Crack 它能够轻松灵活地预测完美的打印结果以及用户文件的示例性显示。在.NET的PDF打印中,可以快速浏览最关键的元素。如果用户需要获得更详细的概述,那么他可以查看快速入门手册,甚至现有文档的详细概述参考。 在这种情况下…...
![](https://img-blog.csdnimg.cn/a201408f0ab449d883970d56b13ad97e.png)
git操作:将一个仓库的分支提交到另外一个仓库分支
这个操作,一般是同步不同网站的同个仓库,比如说gitee 和github。某个网站更新了,你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库,把B仓库分支&am…...
![](https://img-blog.csdnimg.cn/bba645896c784f5d9d8400c759a0e66e.png)
基于Java+SpringBoot+Vue前后端分离医院资源管理系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...
![](https://img-blog.csdnimg.cn/33a255de578c4c79aa0cf199e731c3a3.png)
Android——基本控件下(十七)
1. 文本切换:TextSwitcher 1.1 知识点 (1)理解TextSwitcher和ViewFactory的使用。 1.2 具体内容 范例:切换显示当前时间 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools&…...
![](https://img-blog.csdnimg.cn/f20c8507fac44f74a01b7160b163ccea.png)
HCIP-HCS华为私有云
1、概述 HCS(HuaweiCoudStack)华为私有云:6.3 之前叫FusionSphere OpenStack,6.3.1 版本开始叫FusionCloud,6.5.1 版本开始叫HuaweiCloud Stack (HCS)华为私有云软件。 开源openstack,发放云主机的流程&am…...
![](https://www.ngui.cc/images/no-images.jpg)
docker下载github项目失败
Docker 在构建过程中直接从 GitHub 下载项目时超时,可能是由于网络问题、GitHub 访问限制或其他原因导致的。以下是一些建议和解决方法: 预先下载项目: 在构建 Docker 镜像之前,首先在宿主机上手动克隆 GitHub 项目,然后使用 COPY…...
![](https://img-blog.csdnimg.cn/a65f81024c014f999c38b41d9ec4d607.png)
【CSS】网站 网格商品展示 模块制作 ( 清除浮动需求 | 没有设置高度的盒子且内部设置了浮动 | 使用双伪元素清除浮动 )
一、清除浮动需求 ( 没有设置高度的盒子且内部设置了浮动 ) 绘制的如下模块 : 在上面的盒子中 , 没有设置高度 , 只设置了一个 1215px 的宽度 ; 在列表中每个列表项都设置了 浮动 ; /* 网格商品展示 */ .box-bd {/* 处理列表间隙导致意外换行问题一排有 5 个 228x270 的盒子…...
![](https://img-blog.csdnimg.cn/ec0e02cd6335483b99a1ecb7177b8daf.png)
文本分类任务
文章目录 引言1. 文本分类-使用场景2. 自定义类别任务3. 贝叶斯算法3.1 预备知识3.2 贝叶斯公式3.3 贝叶斯公式的应用3.4 贝叶斯公式在NLP中的应用3.5 贝叶斯公式-文本分类3.6 代码实现3.7 贝叶斯算法的优缺点 4. 支持向量机4.1 支持向量机-核函数4.2 支持向量机-解决多分类4.3…...
![](https://www.ngui.cc/images/no-images.jpg)
Pyecharts教程(一):Python中的pyecharts库绘制3D曲面图
Pyecharts教程(一):Python中的pyecharts库绘制3D曲面图 作者:安静到无声 个人主页 目录 Pyecharts教程(一):Python中的pyecharts库绘制3D曲面图实验结果推荐专栏在Python中,我们可以使用pyecharts库来绘制各种图表,如柱状图、折线图、饼图等。最近,我在学习如何使用pyec…...
![](/images/no-images.jpg)
云端网站建设/湘潭网络推广
在JS中,为我们提供了三个包装类,通过这三个包装类,可以将基本数据类型的数据转换为对象 String() 可以将基本数据类型的字符串转换为String对象 Number() 可以将基本数据类型的数字转换为Number对象 Bolean() 可以将基本数据类型的布尔值转换…...
![](/images/no-images.jpg)
合肥电子商务开发网站建设/seo专员岗位要求
内容篇幅较长,请点击这里阅读全文...
![](/images/no-images.jpg)
职业教育网站建设可行性报告/关键词筛选工具
在最上面的导航栏,点击“项目”—>“属性”—>“配置属性”—>“链接器”—>“系统”—>“子系统(在窗口右边有一个下拉图标)”—>下拉框选择“控制台(/SUBSYSTEM:CONSOLE)”—>最后“确定”—>点击右上角"文件…...
![](/images/no-images.jpg)
下载软件网站/百度网站首页提交入口
十天瘦TM十斤如何在短时间内减轻体重什么样的人适合减肥减肥前的调整减肥的原理减肥7分靠吃 3分靠练如何在短时间内减轻体重 首先,体重的迅速变化,突然胖了或者突然瘦了,都是不正常、不健康的。因此下面介绍一种在合理范围内的减肥方法 什么…...
![](/images/no-images.jpg)
中卫网站建设/中国十大搜索引擎排名最新
App开放接口api安全性—Token签名sign的设计与实现 使用了https后,还有必要对数据进行签名来确保数据没有被篡改吗? 加密和签名的区别?转载于:https://www.cnblogs.com/gotodsp/p/9913579.html...
![](https://img-blog.csdnimg.cn/img_convert/2847c6ddba8109e552d1689713452458.png)
新疆建设云网站办理程序/微信拓客的最新方法
复盘微信支付金额不正确问题—PHP浮点型计算2020-11-15 11:58:29一、背景在做微信支付项目的时候,微信要求金额的单位必须为分,而数据库中订单金额单位是元,所以使用订单金额*100是正确的做法,但是会经常出现少一分钱的状况&#…...