Skip to content

LeetCode 348 · C++

// LC 348. Design Tic-Tac-Toe

#include <vector>

class TicTacToe {
public:
    TicTacToe(int n) : n_(n), rows_(n, 0), cols_(n, 0), diag_(0), antiDiag_(0) {}

    int move(int row, int col, int player) {
        int delta = (player == 1) ? 1 : -1;
        rows_[row] += delta;
        cols_[col] += delta;
        if (row == col) diag_ += delta;
        if (row + col == n_ - 1) antiDiag_ += delta;

        int target = (player == 1) ? n_ : -n_;
        if (rows_[row] == target || cols_[col] == target
                || diag_ == target || antiDiag_ == target) {
            return player;
        }
        return 0;
    }

private:
    int n_;
    std::vector<int> rows_;
    std::vector<int> cols_;
    int diag_;
    int antiDiag_;
};

← Back to the lesson · From The Engineering Handbook (source), CC BY-SA 4.0.