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";//没有空白的格子}
}
leetcode面试题 16.04. 井字游戏相关推荐
- 程序员面试金典 - 面试题 16.04. 井字游戏(计数)
1. 题目 设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" ...
- C++算法学习(力扣:面试题 16.04. 井字游戏)
设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...
- 井字棋 二维数组java_LeetCode 面试题 16.04. 井字游戏 Java
一看到井字棋游戏最先想到决策树,这个题是直接判断输赢.注意不是9个格子,是N*N个格子.那么第一步应该把一维数组放到二维数组中,否则无法遍历. 遇到X,转换成1.遇到O,转换成-1.否则为0 遍历二维 ...
- leetcode —— 面试题 16.19. 水域大小
你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...
- leetcode面试题 16.26. 计算器(栈)
给定一个包含正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. 示例 1: ...
- leetcode面试题 16.21. 交换和(二分查找)
给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素.若有多个答案,返回任 ...
- leetcode面试题 08.04. 幂集(递归)
幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3 ...
- leetcode面试题 16.19. 水域大小(深度优先搜索)
你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...
- LeetCode——面试题 16.19. 水域大小
水域大小 题目 深搜思路 代码 结果 广搜思路 代码 结果 题目 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域 ...
最新文章
- vmware响应时间过长_性能调优高并发下如何缩短响应时间
- ftp服务器搭建(离线安装vsftpd),配置
- Linux下Mysql的查询用法
- 2011年全国软件大赛模拟题及参考答案(Java高职组)
- 用第三方工具类,将JavaBean、List、MapString,Object转成JSON文本
- 威胁情报大会直击 | 企业IT部王森:腾讯企业终端安全管理最佳实践
- spark之5:配置文件
- AT3949-[AGC022D]Shopping【贪心】
- 将py文件打包成exe可执行文件
- 【Git】Git修改Repository语言类型
- 部分基于layui的时间函数
- html5跟html4有什么区别,Html5和Html4的区别
- 奇人有奇书(李渔、张岱、陈继儒、吴敬梓)
- Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用
- 2022依旧可用的抖音无水印解析工具,免费分享
- 移动APP自动化测试框架对比
- 李嘉诚80个人生经典语录
- python3 录屏
- freeCodeCamp 练习3 -- Learn accessbility by building a quiz
- html设计应用程序,软件工程师-20个HTML5应用程序设计示例(10页)-原创力文档