LeetCode36.有效的数独 JavaScript
判断一个 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
};
LeetCode36.有效的数独 JavaScript的更多相关文章
- [Swift]LeetCode36. 有效的数独 | Valid Sudoku
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
- JavaScript之破解数独(附详细代码)
在上一篇分享中,我们用Python和Django来破解数独,这对不熟悉Python和Django的人来说是非常不友好的.这次,笔者只用HTML和JavaScript写了破解数独的程序,对于熟悉前端 ...
- JavaScript数独求解器
<html> <head> <style type="text/css"> .txt { width: 50; height: 50; back ...
- 【Leetcode】【中等】【36. 有效的数独】【JavaScript】
题目描述 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次.数字 1-9 在每一列只能出现一次.数字 1- ...
- Leetcode36.Valid Sudoku有效的数独
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- 02.JavaScript 面向对象精要--函数
在JavaScript中,函数其实也是对象.是函数不同于其他对象的特点是:函数存在一个被称为[[Call]]的内部属性.[[Call]]属性是函数独有的,表明该对象可以被执行.ECMAScript 定 ...
- 数独游戏 js
规则:玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字:保证每一行,每一列,每个宫的数字刚好含1-9,并且不重复. 一.步骤: 生成格子 —— 生成9×9满足规则的数字 —— 置空一定 ...
- JavaScript 面向对象开发知识基础总结
JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...
- [转]25个HTML5和JavaScript游戏引擎库
本文转自:http://www.open-open.com/news/view/27c6ed 1. The GMP JavaScript Game Engine GMP是一个基于精灵2-D游戏,它可以 ...
随机推荐
- svg动画之日出
效果分析 一个太阳,从底部升起来,天空由黑变蓝.那么要画的东西确定为三个:1.太阳(圆形)2.太阳光芒 3.天空 代码如下 <!--画太阳--> <svg width="6 ...
- N个必备的实用jQuery代码段
jQuery(function() { /* <input type="password" name="pass" id="pass" ...
- Java设计模式—备忘录模式
个人感觉备忘录模式是一个比较难的设计模式,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法. 定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以 ...
- Modern Operating System
No one can do all things, learn to be good at use what others already did. Most computers have two m ...
- Mac下完全删除GarageBand
https://www.tekrevue.com/tip/delete-garageband/ 已从应用程序列表删除,/资源库/Application Support/GarageBand/里的也删除 ...
- [转]Apache的CRT格式SSL证书转换成IIS用的PFX格式
转自:http://www.getvm.net/apache-crt-ssl-convert-to-iis-pfx/ Apache使用的SSL证书是.crt格式,如果你的网站从Apache换到了win ...
- Python套接字
1.客户端/服务器架构 什么是客户端/服务器架构?对于不同的人来说,它意味着不同的东西,这取决于你问谁以及描述的是软件还是硬件系统.在这两种情况中的任何一种下,前提都很简单:服务器就是一系列硬件或软件 ...
- JDK1.9怎么配置环境变量
- 使用Virtual Audio Cable软件实现电脑混音支持电脑录音
http://blog.csdn.net/cuoban/article/details/50552644
- Git小抄
生存必备 分支 忽略已提交的文件 版本回退 撤销修改 删除文件 修改最后一次提交的说明信息 tag 生存必备 git init git add <file1> <file2> ...