We don‘t have to keep a complete chess board.. just counters!
class TicTacToe { vector<int> cntVer; vector<int> cntHor; int cntDiag0; int cntDiag1; int _n; public: /** Initialize your data structure here. */ TicTacToe(int n) { cntVer.assign(n, 0); cntHor.assign(n, 0); cntDiag0 = cntDiag1 = 0; _n = n; } /** Player {player} makes a move at ({row}, {col}). @param row The row of the board. @param col The column of the board. @param player The player, can be either 1 or 2. @return The current winning condition, can be either: 0: No one wins. 1: Player 1 wins. 2: Player 2 wins. */ int move(int row, int col, int player) { int d = player == 1 ? 1 : -1; cntVer[col] += d; if(abs(cntVer[col]) == _n) return player; cntHor[row] += d; if(abs(cntHor[row]) == _n) return player; if(col== row) { cntDiag0 += d; if(abs(cntDiag0) == _n) return player; } if ((col + row) == _n - 1) { cntDiag1 += d; if(abs(cntDiag1) == _n) return player; } return 0; } };
时间: 2024-10-16 22:03:13