• 理解错题了 36. 有效的数独


     理解错题了,就是让你在矩阵中循环判断而已,我还想到了康托付展开

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

    数字 1-9 在每一行只能出现一次。
    数字 1-9 在每一列只能出现一次。
    数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
     

    注意:

    一个有效的数独(部分已被填充)不一定是可解的。
    只需要根据以上规则,验证已经填入的数字是否有效即可。
    空白格用 '.' 表示。
     

    示例 1:

    输入: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"]]
    输出:true
    示例 2:

    输入:board =
    [["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 存在, 因此这个数独是无效的。
     

    提示:

    board.length == 9
    board[i].length == 9
    board[i][j] 是一位数字(1-9)或者 '.'

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/valid-sudoku
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
     * @param {character[][]} board
     * @return {boolean}
     */
    var isValidSudoku = function(board) {
        // 理解错题了,就是让你在矩阵中循环判断而已
        const rectArr=[]
        for(let i=0;i<9;i++){
            rectArr.push([i,i+1,0,9])
            rectArr.push([0,9,i,i+1])
        }
        for(let i=0;i<9;i=i+3){
            for(let j=0;j<9;j=j+3){
                rectArr.push([i,i+3,j,j+3])
            }
        }
        console.log(rectArr)
        let isOk=true;
        for(let i=0;i<rectArr.length;i++){
            if(!isOk){
                break;
            }
            const arr=[]
            const rect=rectArr[i];
            for(let j=rect[0];j<rect[1];j++){
                for(let k=rect[2];k<rect[3];k++){
                    const t=board[j][k];
                    if(t!=='.'){
                        if(arr.indexOf(t)===-1){
                            arr.push(t)
                        }else{
                            isOk=false;
                            break
                        }
                    }
                }
            }
        }
    
        return isOk
    };
  • 相关阅读:
    浅谈ES6
    iframe的应用
    vue时时监听input输入框中 输入内容 写法
    点击模态框滑动出来 抽屉
    this.$router 和this.$route 的区别
    iview框架 两侧弹框 出现第二层弹框 一闪而过的问题
    input框中的必填项之取消当前input框为必填项
    v-model 的修饰符
    单页面开发和多页面开发的优缺点
    原型继承+借用构造函数继承 的一些理解
  • 原文地址:https://www.cnblogs.com/caoke/p/16732940.html
Copyright © 2020-2023  润新知