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
Find Winner on Tic Tac Toe Game: Input → Processing → OutputInput Moves[[0,0],[2,0],[1,1],[1,0],[2,1]]5 moves totalGame SimulationXOXOXCheck: Column 1 has X-X-XResultAPlayer A winswith columnWinner found!Algorithm processes moves sequentially, checking for winning patterns after each placement
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
Asked in
Amazon 15 Microsoft 8
28.0K Views
Medium Frequency
~15 min Avg. Time
845 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen