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

go語言LeetCode題解999可以被一步捕獲的棋子數(shù)

 更新時間:2022年12月28日 10:11:07   作者:劉09k11  
這篇文章主要為大家介紹了go語言LeetCode題解999可以被一步捕獲的棋子數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

題目描述

999. 可以被一步捕獲的棋子數(shù) - 力扣(LeetCode)

在一個 8 x 8 的棋盤上,有一個白色的車(Rook),用字符 'R' 表示。棋盤上還可能存在空方塊,白色的象(Bishop)以及黑色的卒(pawn),分別用字符 '.','B''p' 表示。不難看出,大寫字符表示的是白棋,小寫字符表示的是黑棋。

車按國際象棋中的規(guī)則移動。東,西,南,北四個基本方向任選其一,然后一直向選定的方向移動,直到滿足下列四個條件之一:

  • 棋手選擇主動停下來。
  • 棋子因到達棋盤的邊緣而停下。
  • 棋子移動到某一方格來捕獲位于該方格上敵方(黑色)的卒,停在該方格內(nèi)。
  • 車不能進入/越過已經(jīng)放有其他友方棋子(白色的象)的方格,停在友方棋子前。

你現(xiàn)在可以控制車移動一次,請你統(tǒng)計有多少敵方的卒處于你的捕獲范圍內(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'

只有一個格子上存在 board[i][j] == 'R'

思路分析

這道題首先要理解題意

  • 如果沒有阻擋,車可以無限移動,除非自己停止
  • 遇到象,停止。停止的意思是不能向前,但可以向后
  • 遇到邊,停止。停止的意思是不能向前,但可以向后
  • 遇到卒,吃掉,然后在這個方向上必須停止。

解題方法,先整理

  • 去掉沒用的信息
  • 把二維問題轉為一維問題。

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是個一維數(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語言LeetCode題解999可以被一步捕獲的棋子數(shù)的詳細內(nèi)容,更多關于go 一步捕獲的棋子數(shù)的資料請關注腳本之家其它相關文章!

相關文章

  • GO中的slice使用簡介(源碼分析slice)

    GO中的slice使用簡介(源碼分析slice)

    slice(切片)是go中常見和強大的類型,這篇文章不是slice使用簡介,從源碼角度來分析slice的實現(xiàn),slice的一些迷惑的使用方式,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Windows10系統(tǒng)下安裝Go環(huán)境詳細步驟

    Windows10系統(tǒng)下安裝Go環(huán)境詳細步驟

    Go語言是谷歌推出的一款全新的編程語言,可以在不損失應用程序性能的情況下極大的降低代碼的復雜性,這篇文章主要給大家介紹了關于Windows10系統(tǒng)下安裝Go環(huán)境的詳細步驟,需要的朋友可以參考下
    2023-11-11
  • 詳解如何在Golang中監(jiān)聽多個channel

    詳解如何在Golang中監(jiān)聽多個channel

    這篇文章主要為大家詳細介紹了如何在Golang中實現(xiàn)監(jiān)聽多個channel,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • Golang中處理import自定義包出錯問題的解決辦法

    Golang中處理import自定義包出錯問題的解決辦法

    最近開始使用Go/GoLand在import自定義包時出現(xiàn)各種狀況,下面這篇文章主要給大家介紹了關于Golang中處理import自定義包出錯問題的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 解析Golang中的鎖競爭問題

    解析Golang中的鎖競爭問題

    這篇文章主要介紹了golang中的鎖競爭問題,本文通過實例代碼給大家詳細講解,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • 讓goland支持proto文件類型的實現(xiàn)

    讓goland支持proto文件類型的實現(xiàn)

    這篇文章主要介紹了讓goland支持proto文件類型的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Windows下升級go版本過程詳解

    Windows下升級go版本過程詳解

    這篇文章主要為大家介紹了Windows下升級go版本過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • golang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang?基于?mysql?簡單實現(xiàn)分布式讀寫鎖

    golang?基于?mysql?簡單實現(xiàn)分布式讀寫鎖

    這篇文章主要介紹了golang?基于mysql簡單實現(xiàn)分布式讀寫鎖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Golang常用的幾種密碼加密方式分享

    Golang常用的幾種密碼加密方式分享

    這篇文章給大家介紹了Golang常用的幾種密碼加密方式,加密有兩種方式,一種是直接加密,一種是鹽值加密,直接加密指的是將原始密碼直接進行加密,鹽值加密則是在進行密碼加密之前,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-08-08

最新評論