欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ LeetCode1812判斷國(guó)際象棋棋盤格子顏色

 更新時(shí)間:2022年12月16日 14:16:23   作者:LetMeFly  
這篇文章主要為大家介紹了C++ LeetCode1812判斷國(guó)際象棋棋盤格子顏色, 有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1812.判斷國(guó)際象棋棋盤中一個(gè)格子的顏色

力扣題目鏈接:leetcode.cn/problems/de…

給你一個(gè)坐標(biāo) coordinates ,它是一個(gè)字符串,表示國(guó)際象棋棋盤中一個(gè)格子的坐標(biāo)。下圖是國(guó)際象棋棋盤示意圖。

如果所給格子的顏色是白色,請(qǐng)你返回 true,如果是黑色,請(qǐng)返回 false 。

給定坐標(biāo)一定代表國(guó)際象棋棋盤上一個(gè)存在的格子。坐標(biāo)第一個(gè)字符是字母,第二個(gè)字符是數(shù)字。

示例 1:

輸入:coordinates = "a1"
輸出:false
解釋:如上圖棋盤所示,"a1" 坐標(biāo)的格子是黑色的,所以返回 false 。

示例 2:

輸入:coordinates = "h3"
輸出:true
解釋:如上圖棋盤所示,"h3" 坐標(biāo)的格子是白色的,所以返回 true 。

示例 3:

輸入:coordinates = "c7"
輸出:false

提示:

  • coordinates.length == 2
  • 'a' <= coordinates[0] <= 'h'
  • '1' <= coordinates[1] <= '8'

方法一:取模

其實(shí)不難發(fā)現(xiàn),a1a3、a5是黑色,a2、a4是白色,b2是黑色

我們把a ~ h映射為0 ~ 7,把1 ~ 8也映射為0 ~ 7,此時(shí)我們就能發(fā)現(xiàn),當(dāng)字母映射成的數(shù)字和數(shù)字映射成的數(shù)字的奇偶性相同時(shí),格子為黑色。

因此,我們只需要判斷字母 - 'a'數(shù)字 - '1'的奇偶性是否相同,若不同則為白色,返回true

  • 時(shí)間復(fù)雜度O(1)
  • 空間復(fù)雜度O(1)

AC代碼

C++

class Solution {
public:
    bool squareIsWhite(string coordinates) {
        return (coordinates[0] - 'a') % 2 != (coordinates[1] - '1') % 2;
    }
};

方法二:基于方法一的小改進(jìn)

方法一中我們令字母減'a'令數(shù)字減'1',然后判斷二者奇偶性是否相同。

方法二中我們對(duì)此做一個(gè)小小的優(yōu)化:

a的ASCII碼是97,1的ASCII碼是49,二者本來(lái)奇偶性就相同。

因此,在方法二中,我們可以“字母不減'a'”了,“數(shù)字也不減'1'”了,直接判斷字母和數(shù)字的奇偶性是否相同即可

  • 時(shí)間復(fù)雜度O(1)
  • 空間復(fù)雜度O(1)

AC代碼

C++

class Solution {
public:
    bool squareIsWhite(string coordinates) {
        return coordinates[0] % 2 != coordinates[1] % 2;
    }
};

方法二相比于方法一少了兩次減法運(yùn)算。

以上就是C++ LeetCode1812判斷國(guó)際象棋棋盤格子顏色的詳細(xì)內(nèi)容,更多關(guān)于C++ 判斷棋盤格子顏色的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Matlab制作一款3D版2048小游戲

    利用Matlab制作一款3D版2048小游戲

    2048作為一款經(jīng)典的小游戲,相信很多人都玩過(guò)吧?但是3D版的2048不知道有沒(méi)有人玩過(guò)呢?本文將用Matlab制作一個(gè)3D版的2048小游戲,快跟隨小編一起動(dòng)手試一試吧
    2022-02-02
  • C語(yǔ)言中的一維數(shù)組與二維數(shù)組的實(shí)現(xiàn)

    C語(yǔ)言中的一維數(shù)組與二維數(shù)組的實(shí)現(xiàn)

    數(shù)組可以幫我們巧妙解決生活中的問(wèn)題,使我們的代碼簡(jiǎn)潔,本文主要介紹了C語(yǔ)言中的一維數(shù)組與二維數(shù)組,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • C++中vector的實(shí)現(xiàn)方法示例詳解

    C++中vector的實(shí)現(xiàn)方法示例詳解

    這篇文章主要介紹了C++中vector實(shí)現(xiàn)的相關(guān)資料,vector是C++中重要的容器之一,底層通過(guò)三個(gè)迭代器實(shí)現(xiàn),分別是_start,?_finish,?和_end_of_storage,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • C++如何將字符串顛倒輸出

    C++如何將字符串顛倒輸出

    這篇文章主要介紹了C++如何將字符串顛倒輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑

    淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑

    下面小編就為大家?guī)?lái)一篇淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • C++ Boost PropertyTree解析INI文件詳解

    C++ Boost PropertyTree解析INI文件詳解

    Boost PropertyTree庫(kù)不僅可以解析JSON,XML格式,還可以直接解析INI格式文件。這篇文章就是為大家介紹一下如何通過(guò)Boost PropertyTree解析INI文件,需要的可以參考一下
    2022-01-01
  • 詳解用C語(yǔ)言實(shí)現(xiàn)三子棋游戲流程

    詳解用C語(yǔ)言實(shí)現(xiàn)三子棋游戲流程

    三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對(duì)角線連起來(lái),相對(duì)兩邊依次擺上三個(gè)雙方棋子,只要將自己的三個(gè)棋子走成一條線,對(duì)方就算輸了
    2021-11-11
  • 淺談C++中對(duì)象的復(fù)制與對(duì)象之間的相互賦值

    淺談C++中對(duì)象的復(fù)制與對(duì)象之間的相互賦值

    這篇文章主要介紹了淺談C++中對(duì)象的復(fù)制與對(duì)象之間的相互賦值,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++用一棵紅黑樹同時(shí)封裝出set與map的實(shí)現(xiàn)代碼

    C++用一棵紅黑樹同時(shí)封裝出set與map的實(shí)現(xiàn)代碼

    set中存儲(chǔ)的一般為鍵K即可,而map存儲(chǔ)的一般都是鍵值對(duì)KV,也就是說(shuō)他們結(jié)構(gòu)是不同的,那么我們?nèi)绾尾拍苡靡活w紅黑樹同時(shí)封裝出set與map兩種容器呢,那么接下來(lái)我們具體地來(lái)研究下STL庫(kù)中是怎樣實(shí)現(xiàn)的,并且進(jìn)行模擬實(shí)現(xiàn),需要的朋友可以參考下
    2024-03-03
  • Qt QMessageBox類使用教程

    Qt QMessageBox類使用教程

    QMessageBox類提供一個(gè)模態(tài)對(duì)話框,用于通知用戶或詢問(wèn)用戶一個(gè)問(wèn)題并接收答案。這篇文章主要介紹了QMessageBox的一些常用用法,需要的小伙伴快來(lái)學(xué)習(xí)一下
    2021-12-12

最新評(píng)論