题解 | #井字棋#
井字棋
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函数降低效率。