美文网首页
LeetCode 第 36 题:有效的数独

LeetCode 第 36 题:有效的数独

作者: 放开那个BUG | 来源:发表于2023-03-16 16:56 被阅读0次

    1、前言

    图片.png

    2、思路

    本题的思路主要是用数组记录每行,每列,box 中的数映射的位置是否已经存在过,必须各一个数组记录。至于第几个 box 为什么是 i / 3 + (j / 3) * 3,只需要带入 box 就行。

    3、代码

    class Solution {
        public boolean isValidSudoku(char[][] board) {
            int m = board.length, n = board[0].length;
            boolean[][] rowMemo = new boolean[m][n];
            boolean[][] columnMemo = new boolean[m][n];
            boolean[][] boxMemo = new boolean[m][n];
            for(int i = 0; i < m; i++){
                for(int j = 0; j < n; j++){
                    if(board[i][j] == '.'){
                        continue;
                    }
    
                    int num = board[i][j] - '0';
                    if(rowMemo[i][num - 1] || columnMemo[j][num - 1]){
                        return false;
                    }
                    rowMemo[i][num - 1] = true;
                    columnMemo[j][num - 1] = true;
    
                    // index 是第几个 box
                    int index = i / 3 + (j / 3) * 3;
                    if(boxMemo[index][num - 1]){
                        return false;
                    }
                    boxMemo[index][num - 1] = true;
                }
            }
    
            return true;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 第 36 题:有效的数独

          本文链接:https://www.haomeiwen.com/subject/llfmkdtx.html