LeetCode 348 判定井字棋勝負(計數)

2021-10-08 05:42:26 字數 2035 閱讀 2153

請在 n × n 的棋盤上,實現乙個判定井字棋(tic-tac-toe)勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。

在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。

在實現這個判定器的過程中,你可以假設以下這些規則一定成立:

1 . 每一步棋都是在棋盤內的,並且只能被放置在乙個空的格仔裡;

2 . 一旦遊戲中有一名玩家勝出的話,遊戲將不能再繼續;

3 . 乙個玩家如果在同一行、同一列或者同一斜對角線上都放置了自己的棋子,那麼他便獲得勝利。

示例:

給定棋盤邊長 n =

3, 玩家 1 的棋子符號是 "x",玩家 2 的棋子符號是 "o"。

tictactoe toe =

newtictactoe(3

);toe.

move(0

,0,1

);-> 函式返回 0

(此時,暫時沒有玩家贏得這場對決)

|x||||

|||// 玩家 1 在 (0, 0) 落子。||

||toe.

move(0

,2,2

);-> 函式返回 0

(暫時沒有玩家贏得本場比賽)

|x||o|||

||// 玩家 2 在 (0, 2) 落子。||

||toe.

move(2

,2,1

);-> 函式返回 0

(暫時沒有玩家贏得比賽)

|x||o|||

||// 玩家 1 在 (2, 2) 落子。||

|x|toe.

move(1

,1,2

);-> 函式返回 0

(暫沒有玩家贏得比賽)

|x||o|

||o|

|// 玩家 2 在 (1, 1) 落子。||

|x|toe.

move(2

,0,1

);-> 函式返回 0

(暫無玩家贏得比賽)

|x||o|

||o|

|// 玩家 1 在 (2, 0) 落子。

|x||x|

toe.

move(1

,0,2

);-> 函式返回 0

(沒有玩家贏得比賽)

|x||o|

|o|o|

|// 玩家 2 在 (1, 0) 落子.

|x||x|

toe.

move(2

,1,1

);-> 函式返回 1

(此時,玩家 1 贏得了該場比賽)

|x||o|

|o|o|

|// 玩家 1 在 (2, 1) 落子。

|x|x|x|

高階:您有沒有可能將每一步的 move

() 操作優化到比 o

(n^2

) 更快嗎?

類似題目:

leetcode 1275. 找出井字棋的獲勝者(位運算)

程式設計師面試金典 - 面試題 16.04. 井字遊戲(計數)

class

tictactoe

/** player makes a move at (, ).

@param row the row of the board.

@param col the column of the board.

@param player the player, can be either 1 or 2.

@return the current winning condition, can be either:

0: no one wins.

1: player 1 wins.

2: player 2 wins. */

intmove

(int row,

int col,

int player)

};

68 ms 18.7 mb

我的csdn部落格位址

LeetCode 348 判定井字棋勝負

請在 n n 的棋盤上,實現乙個判定井字棋 tic tac toe 勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 每一步棋都是在棋盤內的,並且只能被放置在乙個空的格...

348 判定井字棋勝負

請在 n n 的棋盤上,實現乙個判定井字棋 tic tac toe 勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 1.每一步棋都是在棋盤內的,並且只能被放置在乙個空...

leetcode 井字遊戲

設計乙個演算法,判斷玩家是否贏了井字遊戲。輸入是乙個 n x n 的陣列棋盤,由字元 x 和 o 組成,其中字元 代表乙個空位。以下是井字遊戲的規則 玩家輪流將字元放入空位 中。第乙個玩家總是放字元 o 且第二個玩家總是放字元 x x 和 o 只允許放置在空位中,不允許對已放有字元的位置進行填充。當...