leetcode每日一题(20241206)

leetcode每日一题(20241206)终于周五啦,也刚好leetcode今天是简单题,可以好好放松放松了,看题:

999.可以被一步捕获的棋子数 题目描述:

给定一个 8 x 8 的棋盘,只有一个 白色的车,用字符 'R' 表示。棋盘上还可能存在白色的象 'B' 以及黑色的卒 'p'。空方块用字符 '.' 表示。
车可以按水平或竖直方向(上,下,左,右)移动任意个方格直到它遇到另一个棋子或棋盘的边界。如果它能够在一次移动中移动到棋子的方格,则能够 吃掉 棋子。
注意:车不能穿过其它棋子,比如象和卒。这意味着如果有其它棋子挡住了路径,车就不能够吃掉棋子。
返回白车 攻击 范围内 兵的数量。

这道题没啥说的就是模拟,先找到 R 字符的坐标,然后从这个坐标开始向上,向下,向左,向右 看碰到第一个不是点的字符是不是 p (题目里兵是小写的 p) 返回是 p 的个数就行。

class Solution {
    public int numRookCaptures(char[][] board) {
        int len=board.length;
        int i=0; int j=0;
        for(int x=0;x<len;x++){
            for(int y=0;y<len;y++){
                if (board[x][y] == 'R'){
                    i=x;
                    j=y;
                    break; // 这一块主要break 是内层的,不是外层的
                }  
            }
        }
        int count=0;
        for(int m=i-1;m>=0;m--){
            if(board[m][j]=='B'){
                break;
            }else if(board[m][j]=='p'){
                count++;
                break;
            }
        }

        for(int m=i+1;m<len;m++){
            if(board[m][j]=='B'){
                break;
            }else if(board[m][j]=='p'){
                count++;
                break;
            }
        }

        for(int m=j+1;m<len;m++){
            if(board[i][m]=='B'){
                break;
            }else if(board[i][m]=='p'){
                count++;
                break;
            }
        }

        for(int m=j-1;m>=0;m--){
            if(board[i][m]=='B'){
                break;
            }else if(board[i][m]=='p'){
                count++;
                break;
            }
        }
        return count;
    }
}

加油!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值