leetcode面試題 16.04. 井字游戲

設計一個算法,判斷玩家是否贏了井字游戲。輸入是一個 N x N 的數組棋盤,由字符" ",“X"和"O"組成,其中字符” "代表一個空位。

以下是井字游戲的規則:

玩家輪流將字符放入空位(" “)中。
第一個玩家總是放字符"O”,且第二個玩家總是放字符"X"。
"X"和"O"只允許放置在空位中,不允許對已放有字符的位置進行填充。
當有N個相同(且非空)的字符填充任何行、列或對角線時,游戲結束,對應該字符的玩家獲勝。
當所有位置非空時,也算為游戲結束。
如果游戲結束,玩家不允許再放置字符。
如果游戲存在獲勝者,就返回該游戲的獲勝者使用的字符(“X"或"O”);如果游戲以平局結束,則返回 “Draw”;如果仍會有行動(游戲未結束),則返回 “Pending”。

示例 1:

輸入: board = [“O X”," XO",“X O”]
輸出: “X”

代碼

class Solution {public String tictactoe(String[] board) {int n=board.length,blank=0;for(int i=0;i<n;i++){if(board[i].charAt(0)==' '){blank++;}boolean check=true;for(int j=1;j<n;j++)//檢查每一行if(board[i].charAt(j)==' '){blank++;check=false;break;}else if(board[i].charAt(j)!=board[i].charAt(0)){check=false;break;}if(check) return String.valueOf(board[i].charAt(0));if(board[0].charAt(i)==' ')             {blank++;continue;}check=true;for(int j=1;j<n;j++)//檢查每一列if(board[j].charAt(i)==' '){blank++;check=false;break;}else  if(board[j].charAt(i)!=board[0].charAt(i)){check=false;break;}if(check) return String.valueOf(board[0].charAt(i));}if(board[0].charAt(0)!=' '){boolean check=true;for(int i=1;i<n;i++)//檢查主對角線{if(board[i].charAt(i)!=board[0].charAt(0)){check=false;break;}}if(check) return String.valueOf(board[0].charAt(0));}if(board[0].charAt(n-1)!=' '){boolean check=true;for(int i=1;i<n;i++)//檢查副對角線{if(board[i].charAt(n-i-1)!=board[0].charAt(n-1)){check=false;break;}}if(check) return String.valueOf(board[0].charAt(n-1));}if(blank!=0) return "Pending";else return "Draw";//沒有空白的格子}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA基礎_修飾符

引言&#xff1a;Java的修飾符根據修飾的對象不同&#xff0c;分為類修飾符、方法修飾符、變量修飾符&#xff0c;其中每種修飾符又分為訪問控制修飾符和非訪問控制修飾符。訪問控制存在的原因&#xff1a;a、讓客戶端程序員無法觸及他們不應該觸及的部分 b、允許庫設計者可以改…

etcd與mysql_etcd數據庫備份與還原

1. 備份etcd1.1 手動備份數據etcdctl backup --data-dir /var/lib/etcd/default.etcd --backup-dir 備份目錄1.2 腳本備份數據使用etcd自帶命令etcdctl進行etc備份&#xff0c;腳本如下&#xff1a;#!/bin/bashdate_timedate %Y%m%detcdctl backup --data-dir /var/lib/etcd/de…

iOS https雙向配置

只需要服務器驗證手機端的童鞋可以點開以下鏈接【ios 單向配置https】 http://www.cnblogs.com/OC888/p/6560602.html 兜兜轉轉弄了一個星期&#xff0c;網上的大多數demo都下來過一遍了&#xff0c;各種偏方都試了&#xff0c;終于配置好了雙向配置&#xff0c;網上大多數標題…

創業-程序員獨自5大思維障礙

程序員是最容易創業的&#xff0c;或者說是創業成本最低的職業。只要有一臺電腦和投入自己的時間&#xff0c;就可以寫出暢銷天下的軟件&#xff0c;這是每個程序員的夢想。更何況世界首富常年以來就是程序員出身的比爾蓋茨&#xff0c;這也刺激了更多的程序員走上創業之路。 …

leetcode1144. 遞減元素使數組呈鋸齒狀

給你一個整數數組 nums&#xff0c;每次 操作 會從中選擇一個元素并 將該元素的值減少 1。 如果符合下列情況之一&#xff0c;則數組 A 就是 鋸齒數組&#xff1a; 每個偶數索引對應的元素都大于相鄰的元素&#xff0c;即 A[0] > A[1] < A[2] > A[3] < A[4] >…

typescript_清潔架構的TypeScript刺

typescriptby Warren Bell沃倫貝爾(Warren Bell) 清潔架構的TypeScript刺 (A TypeScript Stab at Clean Architecture) 剝洋蔥皮的方法不止一種。 (More than one way to skin an onion.) 清潔建筑 (Clean Architecture) There are many videos and articles explaining clean…

星辰小隊針對于軟件“星遇”的第二次10天沖刺——第10天

日期&#xff1a;2019.6.6 博客期&#xff1a;099 星期四 呃~確實有一部分的功能來不及實現了&#xff0c;針對目前已經實現的功能開始整合&#xff0c;用戶界面進行美化&#xff0c;把多于沒用的界面和代碼類刪除掉&#xff0c;制作本軟件的敘述性文件和相關文檔&#xff0c;根…

mybatis的select、insert、update、delete語句

一、select <!-- 查詢學生&#xff0c;根據id --> <select id"getStudent" parameterType"String" resultMap"studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_I…

appium java簡單實例_Appium創建一個Note的實例

近來通過Appium&#xff0c;Robotium等幾個框架去了解移動平臺自動化測試。Appium官方實例是使用ContactManager.apk&#xff0c;而Robotium使用的是SDK自帶的Notepad.apk&#xff0c;為了方便比較&#xff0c;在了解Appium的同時把實例修改成跟Robotium一致的Notepad.apk并記錄…

Lync Server 2013無法共享PPT故障排錯處理

前段時間幫助朋友看了一個關于Lync Server 2013無法共享PPT的問題&#xff0c;共享PPT時報如下錯誤&#xff1a; 日志截圖如下&#xff1a; 原因如下前端服務器未關聯Ofice web Application服務器&#xff0c;關聯即可&#xff0c;如下&#xff1a; 關聯完成后&#xff0c;如下…

leetcode733. 圖像渲染(bfs)

有一幅以二維整數數組表示的圖畫&#xff0c;每一個整數表示該圖畫的像素值大小&#xff0c;數值在 0 到 65535 之間。 給你一個坐標 (sr, sc) 表示圖像渲染開始的像素值&#xff08;行 &#xff0c;列&#xff09;和一個新的顏色值 newColor&#xff0c;讓你重新上色這幅圖像…

chrome擴展程序_如何創建Chrome擴展程序

chrome擴展程序by Erika Tan譚詠麟 如何創建Chrome擴展程序 (How to create a Chrome Extension) In this article, I will be teaching you how to make a Chrome Extension of your own. I’m basing it off of lessons learned while creating TalkToMe, a Chrome Extensio…

對‘初學者應該選擇哪種編程語言’的回答——計算機達人成長之路(38)

7、PASCAL語言&#xff08;一&#xff09;一門通&#xff0c;門門通 在計算機學習問題排行版上&#xff0c;有一個問題絕對是穩居榜首&#xff0c;每次提出都能在各大論壇掀起一股頂帖風暴&#xff0c;而各大網站的每個網絡大牛&#xff0c;都會收到無數學院小弟發來弱弱的提問…

leetcode110. 平衡二叉樹(遞歸)

給定一個二叉樹&#xff0c;判斷它是否是高度平衡的二叉樹。本題中&#xff0c;一棵高度平衡二叉樹定義為&#xff1a;一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1:給定二叉樹 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。代碼 /*** Defi…

spring配置文件注解方式引入的兩種方式

一、#{beanID[propertiesName]}方式 <bean id"propertyConfigurer" class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name"fileEncoding" value"utf-8" /><property name&…

vsc 搜索特定代碼_特定問題的通用解決方案:何時編寫代碼以及何時編寫代碼...

vsc 搜索特定代碼by Rina Artstain通過麗娜阿斯特斯坦 特定問題的通用解決方案&#xff1a;何時編寫代碼以及何時編寫代碼 (Generic solutions to specific problems: when to write some code and when to just do it) There is a traditional story that tells of a rabbi w…

java手動編譯jar包_Maven 手動添加第三方依賴包及編譯打包和java命令行編譯JAVA文件并使用jar命令打包...

一&#xff0c;實例:新建了一個Maven項目,在eclipse中通過 build path –> configure path….將依賴包添加到工程中后&#xff0c;eclipse不報錯了。但是用Maven命令 mvn clean compile 時出錯如下&#xff1a;原因是在eclipse中添加了 exteneral jar后&#xff0c;還需要在…

SQL like

確定給定的字符串是否與指定的模式匹配。模式可以包含常規字符和通配符字符。模式匹配過程中&#xff0c;常規字符必須與字符串中指定的字符完全匹配。然而&#xff0c;可使用字符串的任意片段匹配通配符。與使用 和 ! 字符串比較運算符相比&#xff0c;使用通配符可使 LIKE 運…

計劃備份mysql數據庫

1:mysql是我們使用最多的數據庫&#xff0c;如果在日常中正確的對mysql數據進行備份&#xff0c;下面我們就來做這事&#xff0c;通過腳本來實現##########################################################################################################################…

leetcode1333. 餐廳過濾器

給你一個餐館信息數組 restaurants&#xff0c;其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必須使用以下三個過濾器來過濾這些餐館信息。 其中素食者友好過濾器 veganFriendly 的值可以為 true 或者 false&#xff0c;如果為 true 就意味著你…