内容简介:判断一个上图是一个部分填充的有效的数独。
判断一个 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 };
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
锋利的jQuery
单东林、张晓菲、魏然 / 人民邮电出版社 / 2012-7-1 / 49.00元
《锋利的jQuery(第2版)》循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的选择器、DOM操作、事件和动画、AJAX应用、插件、jQuery Mobile、jQuery各个版本变化、jQuery性能优化和技巧等知识点,并结合每个章节后面的案例演示进行练习,达到掌握核心知识点的目的。 为使读者更好地进行开发实践,《锋利的jQuery(第2版)》的第8......一起来看看 《锋利的jQuery》 这本书的介绍吧!