跳到主要内容

794.有效的井字游戏

链接:794.有效的井字游戏
难度:Medium
标签:数组、矩阵
简介:给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。

题解 1 - typescript

  • 编辑时间:2021-12-09
  • 执行用时:76ms
  • 内存消耗:39.3MB
  • 编程语言:typescript
  • 解法介绍:检测数量是否相等或 x 多一个,检测是否不同时获胜,检测 x 获胜时,x 多一个,o 获胜时 o 与 x 数量相等。
function validTicTacToe(board: string[]): boolean {
let cntO = 0,
cntX = 0,
checkO = check('O'),
checkX = check('X');
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
const ch = board[i][j];
if (ch === 'X') cntX++;
else if (ch === 'O') cntO++;
}
}
if (
(cntO !== cntX && cntO !== cntX - 1) ||
(checkO && checkX) ||
(checkO && cntO !== cntX) ||
(checkX && cntO !== cntX - 1)
)
return false;
return true;
function check(ch: string) {
return (
(board[0][0] === ch && board[0][1] === ch && board[0][2] === ch) ||
(board[1][0] === ch && board[1][1] === ch && board[1][2] === ch) ||
(board[2][0] === ch && board[1][2] === ch && board[2][2] === ch) ||
(board[0][0] === ch && board[1][0] === ch && board[2][0] === ch) ||
(board[0][1] === ch && board[1][1] === ch && board[2][1] === ch) ||
(board[0][2] === ch && board[1][2] === ch && board[2][2] === ch) ||
(board[0][0] === ch && board[1][1] === ch && board[2][2] === ch) ||
(board[0][2] === ch && board[1][1] === ch && board[2][0] === ch)
);
}
}