自学内容网 自学内容网

【LeetCode】每日一题 2024_12_6 可以被一步捕获的棋子数(模拟)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:可以被一步捕获的棋子数

代码与解题思路

先读题:题目给了我吗 8*8 的棋盘,问车子一步之内能吃的棋子有几个,只能上下左右走,可能被象阻挡

简单题简单做,找到车的位置,然后遍历上下左右,能吃就 ans++,遇到阻挡就 break 即可,代码如下:(屎山,但理解容易,简单有效)

func numRookCaptures(board [][]byte) (ans int) {
    // 先找出车的位置
    x, y, f := 0, 0, 0
    for i, v := range board {
        for j, v2 := range v {
            if v2 == 'R' {
                x, y, f = i, j, 1
                break
            }
        }
        if f == 1 {
            break
        }
    }

    // 然后遍历上下左右
    for i, j := x, y; i >= 0; i-- { // 上
        if board[i][j] == 'B' {
            break
        }
        if board[i][j] == 'p' {
            ans++
            break
        }
    }
    for i, j := x, y; i < 8; i++ { // 下
        if board[i][j] == 'B' {
            break
        }
        if board[i][j] == 'p' {
            ans++
            break
        }
    }
    for i, j := x, y; j >= 0; j-- { // 左
        if board[i][j] == 'B' {
            break
        }
        if board[i][j] == 'p' {
            ans++
            break
        }
    }
    for i, j := x, y; j < 8; j++ { // 右
        if board[i][j] == 'B' {
            break
        }
        if board[i][j] == 'p' {
            ans++
            break
        }
    }
    
    return ans
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


原文地址:https://blog.csdn.net/Locky136/article/details/144290243

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!