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

本文共 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://lraux.baihongyu.com/

你可能感兴趣的文章
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
读者写者问题(一)
查看>>
linux
查看>>
关系模型
查看>>
Kafka设计解析(三)- Kafka High Availability (下)
查看>>
java重构、重载、重写
查看>>
学习资源下载
查看>>
Celery+python+redis异步执行定时任务
查看>>
[C++] 多态性和虚函数
查看>>
Layout父元素点击不到的解决办法
查看>>
djang data migration
查看>>
转载--video标签在微信内置浏览器和QQ浏览器(手机端)的怪异现象
查看>>
Bashrc 究竟是做什么的 ?
查看>>
SBT build HelloWorld
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
After 500: 写了第500篇博客,然后呢?
查看>>
Wine 开发版 4.6 发布,Windows 应用的兼容层
查看>>
iOS开发-XML&JSON浅析
查看>>
微信小程序人脸识别方案
查看>>
MSSQL-最佳实践-行级别安全解决方案
查看>>