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

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

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

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

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

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

示例 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

看见这道题我觉得应该能做出来,因为我做过五子棋,也是自己研究的数组棋盘遍历,感觉差不多

然而,没想到,做出来就用了我小半个下午的时间,并且用的也是很笨的遍历办法…

var isValidSudoku = function (board) {    //横向遍历    for (let i = 0; i !== 9; i++) {        let temp = board[i].filter(value => value !== ".");        if (new Set(temp).size !== temp.length) {            return false;        }    }    //纵向遍历    for (let i = 0; i !== 9; i++) {        let temp = board.map(value => value.filter((value, index) => index === i)).map(value => value[0]).filter(value => value !== ".");        if (new Set(temp).size !== temp.length) {            return false;        }    }    //3x3宫格遍历    for (let i = 0; i < 9; i += 3) {        //先分为3个9x3的        let temp = board.map(value => value.filter((value, index) => index >= i && index < i + 3)).filter(value => value !== ".");        //再把9x3分成3个3x3        for (let j = 0; j < 9; j += 3) {            //转为1维数组去重判断长度            let temp_3x3 = temp.filter((value, index) => index >= j && index < j + 3).join(",").split(",").filter(value => value !== ".");            if (new Set(temp_3x3).size !== temp_3x3.length) {                return false;            }        }    }    return true;};

方法是很笨的硬莽干

转载于:https://www.cnblogs.com/sbzy/p/9382690.html

你可能感兴趣的文章
strlen函数
查看>>
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
python标准库——queue模块 的queue类(单向队列)
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>
nodejs fs路径
查看>>
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>
深入浅出理解zend framework(三)
查看>>
python语句----->if语句,while语句,for循环
查看>>
javascript之数组操作
查看>>
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>