LeetCode 1275. Find Winner on a Tic Tac Toe Game
考点 | 难度 |
---|---|
Matrix | Easy |
题目
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.
思路
用matrix代表棋盘,根据moves
把棋盘填满,再从行列和对角线判断有没有人赢。
答案
public String tictactoe(int[][] moves) {
int i,arr[][]=new int[3][3];
//storing moves
for(i=0;i<moves.length;i++)
if(i%2==0)
arr[moves[i][0]][moves[i][1]]=1;
else
arr[moves[i][0]][moves[i][1]]=-1;
//checking winner from rows and columns
for(i=0;i<3;i++) {
if(arr[i][0]==arr[i][1]&&arr[i][1]==arr[i][2])
if(arr[i][0]==1)
return "A";
else if(arr[i][0]==-1)
return "B";
if(arr[0][i]==arr[1][i]&&arr[1][i]==arr[2][i])
if(arr[0][i]==1)
return "A";
else if(arr[0][i]==-1)
return "B";
}
//checking winner from main diagonal
if(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2])
if(arr[0][0]==1)
return "A";
else if(arr[0][0]==-1)
return "B";
//checking winner from right diagonal
if(arr[2][0]==arr[1][1]&&arr[1][1]==arr[0][2])
if(arr[2][0]==1)
return "A";
else if(arr[2][0]==-1)
return "B";
if(moves.length<9)
return "Pending";
return "Draw";
}