【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";          }      }  };