【LeetCode】1812. 判断国际象棋棋盘中一个格子的颜色
创始人
2024-03-26 09:29:52
0次

题目描述

给你一个坐标 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’

方法一:找规律

思路:

  • 奇数行的奇数列是白的,偶数行的偶数列是白的,反之是黑的。(在这里,对于字母所在列我通过 字母 - ‘a’ ,因此字母列的下标从 0 开始)。
  • 利用这个思路,如果行和列相加还是偶数,然后该坐标是白的,反之是黑色的。

情况

  • 通过。

时间复杂度:O(1),仅使用常数时间。
空间复杂度:O(1),仅使用常数时间。
在这里插入图片描述

class Solution {
public:bool squareIsWhite(string coordinates) {int num, str;str = coordinates[0] - 'a';num = coordinates[1] - '0';if((str+num)%2 == 0)return true;else return false;}
};

方法二:方法一的优化

思路:

  • 思路和方法一一样,通过行列数的奇偶性确定棋盘颜色。
  • 不同的是,这里我们不再使用 字母 - ‘a’ ,而是直接利用字母和数字的 ascii 码。因此,此时奇数行和奇数行为黑色,偶数行和偶数行为黑色,其余为白色。
  • ‘1’ - ‘8’ = ‘49’ - ‘56’
  • ‘a’ - ‘h’ = ‘97’ - ‘104’

情况

  • 通过;

收获

  • 第二种方法减少了计算,时间和空间效率都得到了提高。

时间复杂度:O(1)
空间复杂度:O(1)
在这里插入图片描述

class Solution {
public:bool squareIsWhite(string coordinates) {if((coordinates[0] + coordinates[1]) % 2 == 0)return false;else return true;}
};

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...