go語(yǔ)言LeetCode題解999可以被一步捕獲的棋子數(shù)
題目描述
999. 可以被一步捕獲的棋子數(shù) - 力扣(LeetCode)
在一個(gè) 8 x 8 的棋盤上,有一個(gè)白色的車(Rook),用字符 'R' 表示。棋盤上還可能存在空方塊,白色的象(Bishop)以及黑色的卒(pawn),分別用字符 '.','B' 和 'p' 表示。不難看出,大寫字符表示的是白棋,小寫字符表示的是黑棋。
車按國(guó)際象棋中的規(guī)則移動(dòng)。東,西,南,北四個(gè)基本方向任選其一,然后一直向選定的方向移動(dòng),直到滿足下列四個(gè)條件之一:
- 棋手選擇主動(dòng)停下來(lái)。
- 棋子因到達(dá)棋盤的邊緣而停下。
- 棋子移動(dòng)到某一方格來(lái)捕獲位于該方格上敵方(黑色)的卒,停在該方格內(nèi)。
- 車不能進(jìn)入/越過(guò)已經(jīng)放有其他友方棋子(白色的象)的方格,停在友方棋子前。
你現(xiàn)在可以控制車移動(dòng)一次,請(qǐng)你統(tǒng)計(jì)有多少敵方的卒處于你的捕獲范圍內(nèi)(即,可以被一步捕獲的棋子數(shù))。
示例 1:

輸入:[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
輸出:3
解釋:
在本例中,車能夠捕獲所有的卒。
示例 2:

輸入:[[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
輸出:0
解釋:
象阻止了車捕獲任何卒。
示例 3:

輸入:[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","p",".",".",".","."],["p","p",".","R",".","p","B","."],[".",".",".",".",".",".",".","."],[".",".",".","B",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."]]
輸出:3
解釋:
車可以捕獲位置 b5,d6 和 f5 的卒。
提示:
board.length == board[i].length == 8
board[i][j] 可以是 'R','.','B' 或 'p'
只有一個(gè)格子上存在 board[i][j] == 'R'
思路分析
這道題首先要理解題意
- 如果沒(méi)有阻擋,車可以無(wú)限移動(dòng),除非自己停止
- 遇到象,停止。停止的意思是不能向前,但可以向后
- 遇到邊,停止。停止的意思是不能向前,但可以向后
- 遇到卒,吃掉,然后在這個(gè)方向上必須停止。
解題方法,先整理
- 去掉沒(méi)用的信息
- 把二維問(wèn)題轉(zhuǎn)為一維問(wèn)題。
AC 代碼
/**
* @param {character[][]} board
* @return {number}
*/
var numRookCaptures = function (board) {
let count = 0
let info = []
for (let i = 0; i < 8; i++) {
let item = []
for (let j = 0; j < 8; j++) {
if ('.' !== board[i][j]) {
item.push(board[i][j])
}
}
item.length > 0 && info.push(item)
}
for (let j = 0; j < 8; j++) {
let item = []
for (let i = 0; i < 8; i++) {
if ('.' !== board[i][j]) {
item.push(board[i][j])
}
}
item.length > 0 && info.push(item)
}
//整理好后的info是個(gè)一維數(shù)組
for (let item of info) {
let index = item.indexOf('R')
if (index < 0) continue
let i = index
while (i--) {
if (item[i] === 'B') break;
if (item[i] === 'p') {
count++
break
}
}
i = index + 1
while (i < item.length) {
if (item[i] === 'B') break;
if (item[i] === 'p') {
count++
break
}
i++
}
}
return count
};以上就是go語(yǔ)言LeetCode題解999可以被一步捕獲的棋子數(shù)的詳細(xì)內(nèi)容,更多關(guān)于go 一步捕獲的棋子數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Go語(yǔ)言題解LeetCode888公平糖果交換示例詳解
- Go語(yǔ)言LeetCode題解937重新排列日志文件
- go語(yǔ)言LeetCode題解944刪列造序示例詳解
- Go語(yǔ)言LeetCode題解961在長(zhǎng)度2N的數(shù)組中找出重復(fù)N次元素
- Go語(yǔ)言leetcode題解953驗(yàn)證外星語(yǔ)詞典示例詳解
- go語(yǔ)言題解LeetCode989數(shù)組形式的整數(shù)加法
- Go/C語(yǔ)言LeetCode題解997找到小鎮(zhèn)法官
- Go語(yǔ)言題解LeetCode724尋找數(shù)組的中心下標(biāo)
相關(guān)文章
golang如何使用gos7讀取S7200Smart數(shù)據(jù)
文章介紹了如何使用Golang語(yǔ)言的Gos7工具庫(kù)讀取西門子S7200Smart系列PLC的數(shù)據(jù),通過(guò)指定數(shù)據(jù)塊號(hào)、起始字節(jié)偏移量和數(shù)據(jù)長(zhǎng)度,可以精確讀取所需的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧2024-12-12
Golang中的自定義類型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)
這篇文章主要介紹了Golang中的自定義類型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
詳解Go語(yǔ)言如何使用標(biāo)準(zhǔn)庫(kù)sort對(duì)切片進(jìn)行排序
Sort?標(biāo)準(zhǔn)庫(kù)提供了對(duì)基本數(shù)據(jù)類型的切片和自定義類型的切片進(jìn)行排序的函數(shù)。今天主要分享的內(nèi)容是使用?Go?標(biāo)準(zhǔn)庫(kù)?sort?對(duì)切片進(jìn)行排序,感興趣的可以了解一下2022-12-12
golang 實(shí)現(xiàn)兩個(gè)結(jié)構(gòu)體復(fù)制字段
這篇文章主要介紹了golang 實(shí)現(xiàn)兩個(gè)結(jié)構(gòu)體復(fù)制字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
CentOS7使用yum安裝Golang的超詳細(xì)步驟
CentOS默認(rèn)并沒(méi)有安裝golang運(yùn)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于CentOS7使用yum安裝Golang的超詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
使用Golang讀取toml配置文件的代碼實(shí)現(xiàn)
在開(kāi)發(fā)過(guò)程中,配置文件是必不可少的一部分,它使我們能夠在不更改代碼的情況下更改應(yīng)用程序的行為,TOML是一種簡(jiǎn)單易讀的配置文件格式,本文將介紹如何使用Golang來(lái)讀取TOML配置文件,需要的朋友可以參考下2024-04-04

