日韩性视频-久久久蜜桃-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在线观看免费高清完整版在线观看 | 处女朱莉第一次 | 疯狂做爰高潮videossex | 亚洲国产成人精品女人久久久 | 欧美一卡二卡三卡四卡 | 一区二区三区激情视频 | 天堂一区在线观看 | 伊人青青操 | 国产又粗又黄视频 | 国产精品国产成人国产三级 | 福利在线影院 | 婷婷综合av | 一级特黄aaaaaa大片 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 亚洲蜜臀av| 在线观看久 | 国产一级二级 | 91国内在线视频 | 99re6在线精品视频免费播放 | 在线观看亚洲色图 | 欧美专区综合 | 男男黄网站| 成都电影免费大全 | 国产真人毛片 | 亚洲中文字幕无码一区二区三区 | 午夜在线视频免费观看 | 69av片| 中文字幕免费高清视频 | 99久久99久久精品国产片桃花 | 91精品国产乱码久久久久 | 国产精品美女久久 | 99久久久无码国产精品不卡 | 亚洲成人xxx | 老司机一区二区三区 | 超清av| 亚洲男人的天堂在线观看 | 91精品一区二区三区综合在线爱 | 中文字幕一区二区视频 | 黄色av影视 | 国内自拍真实伦在线观看 | 国产精品综合在线 | 四虎成人影视 | 国产福利观看 | 国产探花精品一区二区 | 精品69 | 久久日韩 | 一二三在线视频 | 久色综| 亚洲一区二区三区不卡视频 | 色天天av | 成人精品三级av在线看 | 久久精品欧美一区二区三区麻豆 | 国产三级理论片 | 中文字幕高清在线免费播放 | 91射区| 91在线观看 | 快射视频在线观看 | 18禁免费无码无遮挡不卡网站 | 午夜免费福利小电影 | 杨幂毛片午夜性生毛片 | 成人一级影片 | 国产黄a| 欧美午夜理伦三级在线观看 | 国产www免费观看 | 日本五十路女优 | 欧美男女动态图 | 国产专区精品 | 婷婷色一区二区三区 | 国产熟妇久久777777 | 天堂av中文 | 精品免费视频一区二区 | 美国色综合 | 日韩在线看片 | 日韩六十路| 国产高清在线免费 | 第一福利在线视频 | 丁香婷婷激情 | 青青国产在线观看 | 成人三级黄色 | 日韩中文电影 | 国产精品成人3p一区二区三区 | 一本久道视频一本久道 | 日日摸夜夜添狠狠添久久精品成人 | 国产精品久久久久久中文字 | 法国空姐电影在线观看 | 无码人妻丰满熟妇区五十路 | 成人少妇影院yyyy | av亚洲在线 | 一级性生活免费视频 | 丁香激情网| 亚洲av中文无码乱人伦在线观看 | av高清一区二区 | 一区视频在线播放 | 人人澡人人爽 | 天天想你在线观看完整版电影免费 | 中文字字幕一区二区三区四区五区 | 久久伊人国产 |