LintCode 1022. 合法的井字棋状态 JavaScript算法


描述

一个井字棋盘以字符串数组 board的形式给出。返回true当且仅当在一个合法的井字棋游戏当中可能到达当前这种棋盘情况。

board是一个 3 x 3 的数组, 包含字符' ', 'X', 和'O'。字符 ’ '意味着这一格是空的。

以下是井字棋的游戏规则:

玩家需要轮流在空格上放置字符。第一个玩家总是放置'X'字符,第二个玩家总是放置'O'字符。'X''O'总是被放置在空格上,不能放置在已有字符的格子上。当有3格相同的(非空)字符占据一行、一列或者一个对角线的时候,游戏结束。当所有格子都非空的时候游戏也结束。游戏结束后不允许多余操作。
说明
board 是一个长度为3的字符串数组,其中每一个字符串 board[i]的长度为3.每一个 board[i][j]是一个在集合{' ', 'X', 'O'}当中的字符.
样例

- 样例1:

输入:board = ["O ", " ", " "]
输出:false
解释:第一个玩家总是放置"X".

- 样例2:

输入: board = ["XOX", " X ", " "]
输出: false
解释:玩家轮流操作.

- 样例3:

输入: board = ["XXX", " ", "OOO"]
输出: false

- 样例4:

输入: board = ["XOX", "O O", "XOX"]
输出: true

解析

const validTicTacToe = function (board) {
let oCount=0,xCount=0;
for(let i=0;i<board.length;i++){
for(let j=0;j<board[i].length;j++){
board[i][j]==="X"&&xCount++
board[i][j]==="O"&&oCount++
}
}
//X和O的个数不相等且X的个数并没与比O多1,则没人获胜
if(xCount!==oCount&&xCount!==oCount+1) return false;
//假如X获胜,但是X的数量并没有比O多1
if(win(board,"X")&&xCount!==oCount+1) return false;
//假如O获胜,但是O的数量与X的数量不相等
if(win(board,"O")&&xCount!==oCount) return false;
return true;
};
function win(board,P){
for(let i=0;i<board.length;i++){
//同一行字符一样
if(board[i][0]===P&&board[i][1]===P&&board[i][2]===P){
return true
}
//同一列字符一样
if(board[0][i]===P&&board[1][i]===P&&board[2][i]===P){
return true
}

}
//对角线的字符是否一样
if(board[0][0]===P&&board[1][1]===P&&board[2][2]===P){
return true
}
if(board[0][2]===P&&board[1][1]===P&&board[2][0]===P){
return true
}
return false

}

运行结果

LintCode 1022. 合法的井字棋状态 JavaScript算法

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

LintCode 1022. 合法的井字棋状态 JavaScript算法

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » LintCode 1022. 合法的井字棋状态 JavaScript算法
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏