设计一个算法,判断玩家是否赢了井字游戏。输入是一个 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. 井字游戏相关推荐

  1. 程序员面试金典 - 面试题 16.04. 井字游戏(计数)

    1. 题目 设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" ...

  2. C++算法学习(力扣:面试题 16.04. 井字游戏)

    设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...

  3. 井字棋 二维数组java_LeetCode 面试题 16.04. 井字游戏 Java

    一看到井字棋游戏最先想到决策树,这个题是直接判断输赢.注意不是9个格子,是N*N个格子.那么第一步应该把一维数组放到二维数组中,否则无法遍历. 遇到X,转换成1.遇到O,转换成-1.否则为0 遍历二维 ...

  4. leetcode —— 面试题 16.19. 水域大小

    你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...

  5. leetcode面试题 16.26. 计算器(栈)

    给定一个包含正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. 示例 1: ...

  6. leetcode面试题 16.21. 交换和(二分查找)

    给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素.若有多个答案,返回任 ...

  7. leetcode面试题 08.04. 幂集(递归)

    幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3 ...

  8. leetcode面试题 16.19. 水域大小(深度优先搜索)

    你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...

  9. LeetCode——面试题 16.19. 水域大小

    水域大小 题目 深搜思路 代码 结果 广搜思路 代码 结果 题目 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域 ...

最新文章

  1. vmware响应时间过长_性能调优高并发下如何缩短响应时间
  2. ftp服务器搭建(离线安装vsftpd),配置
  3. Linux下Mysql的查询用法
  4. 2011年全国软件大赛模拟题及参考答案(Java高职组)
  5. 用第三方工具类,将JavaBean、List、MapString,Object转成JSON文本
  6. 威胁情报大会直击 | 企业IT部王森:腾讯企业终端安全管理最佳实践
  7. spark之5:配置文件
  8. AT3949-[AGC022D]Shopping【贪心】
  9. 将py文件打包成exe可执行文件
  10. 【Git】Git修改Repository语言类型
  11. 部分基于layui的时间函数
  12. html5跟html4有什么区别,Html5和Html4的区别
  13. 奇人有奇书(李渔、张岱、陈继儒、吴敬梓)
  14. Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用
  15. 2022依旧可用的抖音无水印解析工具,免费分享
  16. 移动APP自动化测试框架对比
  17. 李嘉诚80个人生经典语录
  18. python3 录屏
  19. freeCodeCamp 练习3 -- Learn accessbility by building a quiz
  20. html设计应用程序,软件工程师-20个HTML5应用程序设计示例(10页)-原创力文档

热门文章

  1. ---------愿 青春与我皆不付---------------------
  2. libevent项目分析(一) -- 准备阶段
  3. 互联网寒冬!技术站最全MySQL数据库实战规范
  4. 我了解到的面试的一些小内幕!顺利通过阿里Android岗面试
  5. linux 问题一 apt-get install 被 lock
  6. UIView封装动画--iOS利用系统提供方法来做关键帧动画
  7. STM32f4 ARM Bootloader
  8. 所有程序员都应该遵守的11条规则
  9. C/C++查找一定范围内的素数(筛法)
  10. soapui自带的webservice实例 MockService