博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode36.有效的数独 JavaScript
阅读量:7082 次
发布时间:2019-06-28

本文共 1968 字,大约阅读时间需要 6 分钟。

判断一个 9x9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

  • 数字 1-9 在每一行只能出现一次。
  • 数字 1-9 在每一列只能出现一次。
  • 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

上图是一个部分填充的有效的数独。

数独部分空格内已填入了数字,空白格用 '.' 表示。

示例 1:

输入:

[  ["5","3",".",".","7",".",".",".","."],  ["6",".",".","1","9","5",".",".","."],  [".","9","8",".",".",".",".","6","."],  ["8",".",".",".","6",".",".",".","3"],  ["4",".",".","8",".","3",".",".","1"],  ["7",".",".",".","2",".",".",".","6"],  [".","6",".",".",".",".","2","8","."],  [".",".",".","4","1","9",".",".","5"],  [".",".",".",".","8",".",".","7","9"]]

输出: true

示例 2:

输入:

[  ["8","3",".",".","7",".",".",".","."],  ["6",".",".","1","9","5",".",".","."],  [".","9","8",".",".",".",".","6","."],  ["8",".",".",".","6",".",".",".","3"],  ["4",".",".","8",".","3",".",".","1"],  ["7",".",".",".","2",".",".",".","6"],  [".","6",".",".",".",".","2","8","."],  [".",".",".","4","1","9",".",".","5"],  [".",".",".",".","8",".",".","7","9"]]

输出: false

解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。

但由于位于左上角的` 3x3` 宫内有两个 `8` 存在, 因此这个数独是无效的。

说明:

一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
给定数独序列只包含数字 1-9 和字符 '.'
给定数独永远是 9x9 形式的。

答案参考:

/** * @param {character[][]} board * @return {boolean} */var isValidSudoku = function(board) {//   检查每一行  for (let arr of board) {                let row = []    for (let c of arr) {      if (c !== '.') row.push(c);    }    let set = new Set(row)    if (set.size !== row.length) return false;  }  //   检查每一列  for (let i = 0; i < 9; i++) {    let col = []    board.map( arr => {      if (arr[i] !== '.') col.push(arr[i])    })    let set = new Set(col)    if (set.size !== col.length) return false;  }  //   检查每个小方块  for (let x = 0; x < 9; x += 3) {    for (let y = 0; y < 9; y += 3) {      let box = []      for (let a = x; a < 3 + x; a ++) {        for (let b = y; b < 3 + y; b ++) {          if (board[a][b] !== '.') box.push(board[a][b])        }      }      let set = new Set(box)      if (set.size !== box.length) return false    }  }    return true};

转载地址:http://vymml.baihongyu.com/

你可能感兴趣的文章
ssh使用无密码登陆
查看>>
Fairware勒索软件频繁攻击Linux服务器 大家赶紧做好备份
查看>>
亿联视频会议云管理服务平台震撼上市
查看>>
英特尔专家揭秘内部高效数据中心计划
查看>>
NSA DanderSpiritz测试指南——木马生成与测试
查看>>
F5公司:“双十一”式的DDOS,你准备好了么?
查看>>
华硕设立5000万美元风投基金:为硅谷初创企业提供全方位支持
查看>>
“云计算”和“大数据”成为中国公民科学素质基准
查看>>
项目实战:如何构建知识图谱
查看>>
商用WiFi引发移动互联网入口争夺战
查看>>
Intel Security不要防火墙,计划将McAfee NGFW和防火墙企业业务卖掉
查看>>
《中国人工智能学会通讯》——11.63 属性关系的自动学习
查看>>
立足OpenStack基础,Mirantis加入容器编排战局
查看>>
开放式智能感知平台xPerception:解决AI和人类、虚拟与现实之间的“最后一公里”...
查看>>
东南大学高桓:知识图谱表示学习 | 直播预告·PhD Talk #15
查看>>
Java ThreadLocal 使用详解
查看>>
CentOS下安装JDK的三种方法
查看>>
Facebook人工智能负责人:我们可以教机器学习常识
查看>>
软件定义存储之后,下一步考虑的是什么?
查看>>
C++ 之父 Stroustrup 推出“ C++ 核心准则”
查看>>