力扣每日一题:5705. 判断国际象棋棋盘中一个格子的颜色 深度剖析思路!

简介: 力扣每日一题:5705. 判断国际象棋棋盘中一个格子的颜色 深度剖析思路!

5705. 判断国际象棋棋盘中一个格子的颜色


难度:简单


题目:

给你一个坐标 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. 首先你需要先把常用的那些算法掌握了,才能在遇到一道题的时候去想该用什么方法
  2. 一定题目数量的积累,能让你遇到同类型题目的几率变大,从而参照历史解法快速解题
  3. 培养自己思考、总结的能力,这点就要靠逐步训练了才能在遇到一道题的时候快速明确算法。

那么这道题,由于只有黑、白两种颜色,什么算法的结果只涉及2中结果?没错,就是异或操作。

首先,异或操作必须要是数字,那么横坐标我们可以通过ascii将a、b、c...转换为数字。

其次,横纵坐标我们需要都保持在0、1之间方便异或比较,那么将结果取余即可。

左下角coordinates为'a1'转换后为'97 1' 1 ^ 1 = 0 为黑色。

依次类推,'b1' = '98 1' = '0 1' 0 ^ 1 = 1为白色

'a2' = '97 2' = '10' = 1 为白色。

最终,按照现在的规律,两数分别取余在异或,与两数求和后异或结果相同,故此能相加后异或更为简便。


解题:

class Solution:
    def squareIsWhite(self, coordinates):
        s,n = coordinates
        # 这里使用if判断结果不为0,则表示True的方式,简化代码
        return True if (ord(s)+ int(n)) % 2 else False




相关文章
|
6月前
|
算法
每日一题:LeetCode-75. 颜色分类
每日一题:LeetCode-75. 颜色分类
|
6月前
|
Go
golang力扣leetcode 75.颜色分类
golang力扣leetcode 75.颜色分类
46 0
|
6月前
|
存储 算法
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
|
3月前
|
算法 搜索推荐
LeetCode第75题颜色分类
文章介绍了LeetCode第75题"颜色分类"的解法,通过双指针技术对数组中的0、1和2进行排序,避免了传统的排序算法,提供了一种时间复杂度为O(n)的高效解决方案。
LeetCode第75题颜色分类
|
3月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
51 3
|
3月前
|
Python
【Leetcode刷题Python】75. 颜色分类
在不使用sort函数的情况下对包含红色、白色和蓝色元素的数组进行排序的方法:插入排序法和单指针交换法,并提供了相应的Python实现代码。
15 0
|
5月前
|
数据采集 SQL 算法
LeetCode题目75:颜色分类【python】
LeetCode题目75:颜色分类【python】
|
6月前
|
算法
【力扣】75.颜色分类
【力扣】75.颜色分类
|
6月前
|
Java
|
6月前
leetcode-75:颜色分类
leetcode-75:颜色分类
56 0