Find Winner on a Tic Tac Toe Game - Problem
Tic-tac-toe is played by two players A and B on a 3 x 3 grid. The rules of Tic-Tac-Toe are:
- Players take turns placing characters into empty squares ' '
- The first player A always places 'X' characters, while the second player B always places 'O' characters
- 'X' and 'O' characters are always placed into empty squares, never on filled ones
- The game ends when there are three of the same (non-empty) character filling any row, column, or diagonal
- The game also ends if all squares are non-empty
- No more moves can be played if the game is over
Given a 2D integer array moves where moves[i] = [rowi, coli] indicates that the ith move will be played on grid[rowi][coli].
Return the winner of the game if it exists (A or B). In case the game ends in a draw return "Draw". If there are still movements to play return "Pending".
You can assume that moves is valid (i.e., it follows the rules of Tic-Tac-Toe), the grid is initially empty, and A will play first.
Input & Output
Example 1 — Player A Wins
$
Input:
moves = [[0,0],[2,0],[1,1],[1,0],[2,1]]
›
Output:
A
💡 Note:
Player A (X) places at positions creating column: (0,0), (1,1), (2,1). After move 5, A has three X's in column 1, so A wins.
Example 2 — Draw Game
$
Input:
moves = [[0,0],[1,1],[0,1],[0,2],[1,0],[2,0],[1,2],[2,1],[2,2]]
›
Output:
Draw
💡 Note:
All 9 squares are filled with no three in a row. The game ends in a draw.
Example 3 — Game Pending
$
Input:
moves = [[0,0],[1,1],[2,0]]
›
Output:
Pending
💡 Note:
Only 3 moves played, no winner yet, and the board is not full. Game is still pending.
Constraints
- 1 ≤ moves.length ≤ 9
- moves[i].length == 2
- 0 ≤ rowi, coli ≤ 2
- There are no repeated moves.
- moves follow the rules of tic tac toe.
Visualization
Tap to expand
Understanding the Visualization
1
Input Moves
Array of [row,col] positions in order
2
Simulate Game
Place X and O alternately, check for wins
3
Determine Result
A wins, B wins, Draw, or Pending
Key Takeaway
🎯 Key Insight: Only check for wins after each move, and use efficient counting to avoid building the full board
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code