日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

LeetCode简单题之找出井字棋的获胜者

發布時間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode简单题之找出井字棋的获胜者 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

A 和 B 在一個 3 x 3 的網格上玩井字棋。
井字棋游戲的規則如下:
玩家輪流將棋子放在空方格 (" ") 上。
第一個玩家 A 總是用 “X” 作為棋子,而第二個玩家 B 總是用 “O” 作為棋子。
“X” 和 “O” 只能放在空方格中,而不能放在已經被占用的方格上。
只要有 3 個相同的(非空)棋子排成一條直線(行、列、對角線)時,游戲結束。
如果所有方塊都放滿棋子(不為空),游戲也會結束。
游戲結束后,棋子無法再進行任何移動。
給你一個數組 moves,其中每個元素是大小為 2 的另一個數組(元素分別對應網格的行和列),它按照 A 和 B 的行動順序(先 A 后 B)記錄了兩人各自的棋子位置。
如果游戲存在獲勝者(A 或 B),就返回該游戲的獲勝者;如果游戲以平局結束,則返回 “Draw”;如果仍會有行動(游戲未結束),則返回 “Pending”。
你可以假設 moves 都 有效(遵循井字棋規則),網格最初是空的,A 將先行動。
示例 1:
輸入:moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
輸出:“A”
解釋:“A” 獲勝,他總是先走。
"X " "X " "X " "X " "X "
" " -> " " -> " X " -> " X " -> " X "
" " "O " "O " "OO " “OOX”
示例 2:
輸入:moves = [[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]
輸出:“B”
解釋:“B” 獲勝。
"X " "X " "XX " “XXO” “XXO” “XXO”
" " -> " O " -> " O " -> " O " -> "XO " -> "XO "
" " " " " " " " " " "O "
示例 3:
輸入:moves = [[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],[0,1],[0,2],[2,2]]
輸出:“Draw”
輸出:由于沒有辦法再行動,游戲以平局結束。
“XXO”
“OOX”
“XOX”
示例 4:
輸入:moves = [[0,0],[1,1]]
輸出:“Pending”
解釋:游戲還沒有結束。
"X "
" O "
" "
提示:
1 <= moves.length <= 9
moves[i].length == 2
0 <= moves[i][j] <= 2
moves 里沒有重復的元素。
moves 遵循井字棋的規則。
來源:力扣(LeetCode)

解題思路

??這是一道非常直接的題,首先明確規則,只要三點成一線即可;moves中存儲的A和B的操作,我們把里面AB的操作分開來單獨檢驗它們是否能三點一線就好了,當然為了防止函數調用出錯,我們需要將各種情況分類。

class Solution:def tictactoe(self, moves: List[List[int]]) -> str:if len(moves)<3:return 'Pending'A=moves[::2]  #偶數下標均為A的操作B=moves[1::2]  #奇數下標均為B的操作def k(x,y):  #計算斜率(棋盤和笛卡爾坐標系略有不同,按同樣的操作處理不影響結果)try:return (y[1]-x[1])/(y[0]-x[0])  #正常情況except:return float('inf')  #斜率為tan90時的情況if len(A)<3:if len(B)>2:for x,y,z in itertools.combinations(B,3):if k(x,y)==k(x,z):  #如果兩個符合三點共線條件即勝出return 'B'else:return 'Pending'else:if len(B)>2:for x,y,z in itertools.combinations(A,3):if k(x,y)==k(x,z):return 'A'for x,y,z in itertools.combinations(B,3):if k(x,y)==k(x,z):return 'B'else:for x,y,z in itertools.combinations(A,3):if k(x,y)==k(x,z):return 'A'return 'Pending'return 'Draw' if len(moves)==9 else 'Pending'


??當然可以利用向量外積來判斷三點是否同線。

class Solution:def tictactoe(self, moves: List[List[int]]) -> str:if len(moves)<3:return 'Pending'A=moves[::2]B=moves[1::2]if len(A)<3:if len(B)>2:for x,y,z in itertools.combinations(B,3):if (y[1]-x[1])*(z[0]-x[0])==(y[0]-x[0])*(z[1]-x[1]):return 'B'if (y[1]-x[1])*(z[0]-x[0])==(y[0]-x[0])*(z[1]-x[1]):return 'B'else:return 'Pending'else:if len(B)>2:for x,y,z in itertools.combinations(A,3):if (y[1]-x[1])*(z[0]-x[0])==(y[0]-x[0])*(z[1]-x[1]):return 'A'for x,y,z in itertools.combinations(B,3):if (y[1]-x[1])*(z[0]-x[0])==(y[0]-x[0])*(z[1]-x[1]):return 'B'else:for x,y,z in itertools.combinations(A,3):if (y[1]-x[1])*(z[0]-x[0])==(y[0]-x[0])*(z[1]-x[1]):return 'A'return 'Pending'return 'Draw' if len(moves)==9 else 'Pending'

總結

以上是生活随笔為你收集整理的LeetCode简单题之找出井字棋的获胜者的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品久久九九 | 丰满熟妇乱又伦 | 色倩网站| 午夜精品久久久久久久久久久久 | 91桃色视频| 色综合视频 | 六月丁香综合 | 97超视频| 丝袜脚交国产在线观看 | 亚洲精品.www | 久久日韩精品 | 我们的2018中文免费看 | 丁香婷婷在线观看 | 经典三级视频 | 人人草在线观看 | 福利姬在线观看 | 欧美性bbw | 日本中文在线观看 | 99精品视频在线看 | 污污在线看 | 国产精品久久久久久久久久久久久久久久久久 | 自拍超碰| 欧美91视频 | 777av| 亚洲国产乱 | 亚洲第一女人av | 情侣av| 无码人妻精品一区二区三区9厂 | 久久这里只有 | 蜜桃久久精品成人无码av | 天天色综合图片 | 亚洲永久视频 | 婷婷丁香六月 | 四虎tv | 暖暖av| jizz日本在线播放 | 三男一女吃奶添下面 | 俄罗斯女人裸体性做爰 | 成人欧美一区二区三区黑人免费 | 日韩av二区 | 欧美日本亚洲韩国国产 | 波多野吉衣中文字幕 | 一级一级黄色片 | 法国空姐在线观看免费 | 91精品国产乱码久久 | 午夜香蕉网 | 日韩视频不卡 | 91尤物在线| 九色麻豆 | 久久精品视频国产 | 香蕉视频国产在线观看 | 国产精品美女久久久久图片 | 亚洲精品亚洲人成人网 | 狠狠干网站 | 亚洲av无码精品色午夜果冻不卡 | 女性裸体无遮挡胸 | 国产亚洲片 | av免费看片 | 久久久www免费人成人片 | 香蕉茄子视频 | 成人免费观看视频网站 | 色一涩| 第四色影音先锋 | 蜜臀av在线免费观看 | 老司机深夜视频 | 少妇的性事hd | www.三区 | 看个毛片| 另类专区成人 | 亚洲av无码国产精品久久 | 广州毛片 | 亚洲国产精品成人综合色在线婷婷 | 在线播放a| 国产精品污www在线观看 | 九色在线观看视频 | 制服丝袜av一区二区三区下载 | xxxxhd欧美 | 精品乱子伦一区二区三区 | 日本视频一区二区 | 美女91网站| 91麻豆国产福利精品 | 免费成人精品 | 中文字幕无码精品亚洲资源网久久 | 国产国语老龄妇女a片 | 日本成人在线网站 | 2024国产精品视频 | 国产乱码一区二区三区在线观看 | 妓院一钑片免看黄大片 | av在线免费网站 | 国产乱子伦一区二区 | 日本在线不卡一区 | 一区二区日韩视频 | 亚洲图色在线 | 欧美高清| 亚洲精品美女在线观看 | 欧美日韩国产专区 | 日韩在线视频免费观看 | 日韩精品一区二区三区在线观看 | 九九热re |