website/content.en/ChapterFour/1200~1299/1275.Find-Winner-on-a-Tic-Tac-Toe-Game.md
Tic-tac-toe is played by two players A and B on a 3 x 3 grid.
Here are the rules of Tic-Tac-Toe:
Given an array moves where each element is another array of size 2 corresponding to the row and column of the grid where they mark their respective character in the order in which A and B play.
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 (It follows the rules of Tic-Tac-Toe), the grid is initially empty and A will play first.
Example 1:
Input: moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
Output: "A"
Explanation: "A" wins, he always plays first.
"X " "X " "X " "X " "X "
" " -> " " -> " X " -> " X " -> " X "
" " "O " "O " "OO " "OOX"
Example 2:
Input: moves = [[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]
Output: "B"
Explanation: "B" wins.
"X " "X " "XX " "XXO" "XXO" "XXO"
" " -> " O " -> " O " -> " O " -> "XO " -> "XO "
" " " " " " " " " " "O "
Example 3:
Input: moves = [[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],[0,1],[0,2],[2,2]]
Output: "Draw"
Explanation: The game ends in a draw since there are no moves to make.
"XXO"
"OOX"
"XOX"
Example 4:
Input: moves = [[0,0],[1,1]]
Output: "Pending"
Explanation: The game has not finished yet.
"X "
" O "
" "
Constraints:
1 <= moves.length <= 9moves[i].length == 20 <= moves[i][j] <= 2moves.moves follow the rules of tic tac toe.A and B play Tic-Tac-Toe on a 3 x 3 grid. The rules of Tic-Tac-Toe are as follows:
Given an array moves, where each element is another array of size 2 (the elements correspond to the row and column of the grid respectively), it records the positions of the two players' pieces in the order of A's and B's moves (A first, then B). If the game has a winner (A or B), return the winner of the game; if the game ends in a draw, return "Draw"; if there are still moves to be made (the game has not ended), return "Pending". You can assume that moves is valid (follows the rules of Tic-Tac-Toe), the grid is initially empty, and A will move first.
Note:
package leetcode
func tictactoe(moves [][]int) string {
board := [3][3]byte{}
for i := 0; i < len(moves); i++ {
if i%2 == 0 {
board[moves[i][0]][moves[i][1]] = 'X'
} else {
board[moves[i][0]][moves[i][1]] = 'O'
}
}
for i := 0; i < 3; i++ {
if board[i][0] == 'X' && board[i][1] == 'X' && board[i][2] == 'X' {
return "A"
}
if board[i][0] == 'O' && board[i][1] == 'O' && board[i][2] == 'O' {
return "B"
}
if board[0][i] == 'X' && board[1][i] == 'X' && board[2][i] == 'X' {
return "A"
}
if board[0][i] == 'O' && board[1][i] == 'O' && board[2][i] == 'O' {
return "B"
}
}
if board[0][0] == 'X' && board[1][1] == 'X' && board[2][2] == 'X' {
return "A"
}
if board[0][0] == 'O' && board[1][1] == 'O' && board[2][2] == 'O' {
return "B"
}
if board[0][2] == 'X' && board[1][1] == 'X' && board[2][0] == 'X' {
return "A"
}
if board[0][2] == 'O' && board[1][1] == 'O' && board[2][0] == 'O' {
return "B"
}
if len(moves) < 9 {
return "Pending"
}
return "Draw"
}