【LeetCode第 165 场周赛】找出井字棋的获胜者

  • 2019 年 12 月 3 日
  • 笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shiliang97/article/details/103334057

5275. Find Winner on a Tic Tac Toe Game

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:

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 3 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 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 <= 9 moves[i].length == 2 0 <= moves[i][j] <= 2 There are no repeated elements on moves. moves follow the rules of tic tac toe.

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-winner-on-a-tic-tac-toe-game 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

把下棋步骤输进去,直接判断3*3棋盘有没有赢,赢了就return

没有赢看是不是下了九次,判断平局还是可以继续。

class Solution {  public:      string tictactoe(vector<vector<int>>& moves) {          vector<vector<int>>vv;          for(int i=0;i<3;i++){              vector<int>v(3);              vv.push_back(v);          }          int flag=0;          for(int i=0;i<moves.size();i++){              int a=moves[i][0];              int b=moves[i][1];              if(i%2==0){                  flag=1;              }else{                  flag=-1;              }              vv[a][b]=flag;              if((vv[a][0]==flag&&vv[a][1]==flag&&vv[a][2]==flag)||(vv[0][b]==flag&&vv[1][b]==flag&&vv[2][b]==flag)||(vv[0][0]==flag&&vv[1][1]==flag&&vv[2][2]==flag)||(vv[0][2]==flag&&vv[1][1]==flag&&vv[2][0]==flag)){                  if(flag==1){                      return "A";                  }else{                      return "B";                  }              }            }          if(moves.size()<9){              return "Pending";          }else{              return "Draw";          }      }  };