JS实现判断有效的数独算法示例


Posted in Javascript onFebruary 25, 2019

本文实例讲述了JS实现判断有效的数独算法。分享给大家供大家参考,具体如下:

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

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

JS实现判断有效的数独算法示例

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

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

<script>
var isValidSudoku = function(board) {
 const boxes = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 const cols = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 const rows = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 let test = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 for (let i = 0; i < 9; i++) {
  for (let j = 0; j < 9; j++) {
   const digit = board[i][j];
   if (digit !== '.') {
    const k = Math.floor(j / 3) + (Math.floor(i / 3) * 3);
    if (boxes[k][digit] || cols[j][digit] || rows[i][digit]) {
     return false;
    }
    boxes[k][digit] = cols[j][digit] = rows[i][digit] = true;
   }
  }
 }
 return true;
};
const board = [
 ["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"]
]
console.log(isValidSudoku(board))
</script>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS实现判断有效的数独算法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
5分钟学会Vue动画效果(小结)
Jul 21 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
js实现通过开始结束控制的计时器
Feb 25 #Javascript
js实现倒计时器自定义时间和暂停
Feb 25 #Javascript
JS module的导出和导入的实现代码
Feb 25 #Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 25 #Javascript
js实现网页同时进行多个倒计时功能
Feb 25 #Javascript
js实现一个页面多个倒计时的3种方法
Feb 25 #Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 #Javascript
You might like
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
ie focus bug 解决方法
2009/09/03 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
Vue渲染函数详解
2017/09/15 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Django REST 异常处理详解
2020/07/15 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Python request中文乱码问题解决方案
2020/09/17 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
论文指导教师评语
2014/04/28 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python