車的可用捕獲量(available-captures-for-rook)

車的可用捕獲量(available-captures-for-rook)

返回車能夠在一次移動中捕獲到的卒的數量。
在這裏插入圖片描述

代碼

class Solution {
    public int numRookCaptures(char[][] board) {
        // 定義上下左右四個方向
        int[] dx = {-1, 1, 0, 0};
        int[] dy = {0, 0, -1, 1};
       
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 8; j++) {
                // 找到白車所在的位置
                if (board[i][j] == 'R') {
                    // 分別判斷白車的上、下、左、右四個方向
                    int res = 0;
                    for (int k = 0; k < 4; k++) {
                        int x = i, y = j;
                        while (true) {
                            x += dx[k];
                            y += dy[k];
                            if (x < 0 || x >= 8 || y < 0 || y >= 8 || board[x][y] == 'B') {
                                break;
                            }
                            if (board[x][y] == 'p') {
                                res++;
                                break;
                            }
                        }
                    }
                    return res;
                }
            }
        }
        return 0;
    }
}
執行用時 :0 ms, 在所有 Java 提交中擊敗了100.00%的用戶
內存消耗 :36.9 MB, 在所有 Java 提交中擊敗了5.40%的用戶

注意,

        // 定義上下左右四個方向
        int[] dx = {-1, 1, 0, 0};
        int[] dy = {0, 0, -1, 1};

這兩個數組用來定義上下左右四個方向

(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)

比如說,上面表格中的(1,1)座標,1+dx1+dy就可以得到上下左右座標。

轉自

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章