亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ LeetCode1812判斷國際象棋棋盤格子顏色

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

1812.判斷國際象棋棋盤中一個格子的顏色

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

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

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

給定坐標(biāo)一定代表國際象棋棋盤上一個存在的格子。坐標(biāo)第一個字符是字母,第二個字符是數(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'

方法一:取模

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

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

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

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

AC代碼

C++

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

方法二:基于方法一的小改進

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

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

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

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

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

AC代碼

C++

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

方法二相比于方法一少了兩次減法運算。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Qt QMessageBox類使用教程

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

最新評論