题解 | #井字棋#

井字棋

http://www.nowcoder.com/questionTerminal/e1bb714eb9924188a0d5a6df2216a3d1

井字棋

井字棋

/*
2022年09月21日 11:43:09
1  0  1
1 -1 -1
1 -1  0
利用sum,累加行、列、对角线的1,判断累加和是否和行、列的size相等
*/
class Board {
  public:
    bool checkWon(vector<vector<int> > board) {
        int row = board.size();
        int col = board[0].size();
        // 检查行
        for(int i = 0; i < row; ++i){
            int sum = 0;
            for(int j = 0; j < col; ++j){
                sum += board[i][j];
            }
            if(sum == col)
                return true;
        }
        // 检查列
        for(int i = 0; i < col; ++i){
            int sum = 0;
            for(int j = 0; j < row; ++j){
                sum += board[j][i];
            }
            if(sum == row)
                return true;
        }
        // 检查对角线
        int sum = 0;
        for(int i = 0; i <row; ++i){
            sum += board[i][i];
        }
        if(sum == row)
            return true;
        // 检查斜对角线
        sum = 0;
        for(int i = 0; i < row; ++i){
            sum += board[i][col-1-i];
        }
        if(sum == row)
            return true;
        return false; // 都不满足
    }
};

最好先把row、col计算出来,不然多次调用size函数降低效率。

全部评论
这种写法只能适用于3*3棋盘呀,他给的是动态board棋盘,我如果输入4*4的数组,不就解不出来了。。。。
1 回复 分享
发布于 07-30 15:09 江苏

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务