leetcode——36.有效的数独

用布尔数组标记是否被访问过,来排查

public boolean isValidSudoku(char[][] board) {
        //用boolean数组进行标记,是否访问过。
        //依次对行列块的数字进行遍历
        boolean[] used = new boolean[9];
        for(int i = 0;i<9;i++){
            Arrays.fill(used,false);
            //遍历行
            for(int j = 0;j<9;j++){
                if(!check(board[i][j],used)){
                    return false;
                }
            }
            Arrays.fill(used,false);
            //遍历列
            for(int j = 0;j<9;j++){
                if(!check(board[j][i],used)){
                    return false;
                }
            }
        }
        for(int r = 0;r<3;r++){
            for(int c = 0;c<3;c++){
                Arrays.fill(used,false);
                for(int i = r*3;i<r*3+3;i++){
                    for(int j = c*3;j<c*3+3;j++){
                        if(!check(board[i][j],used)){
                            return false;
                        }
                    }
                }
            }
        }
        return true;
    }

    private boolean check(char ch, boolean[] used) {
        if(ch == '.') return true;
        if(used[ch - '1'])  return false;
        used[ch - '1'] = true;
        return true;
    }

——2020.7.10

我的前方是万里征途,星辰大海!!
原文地址:https://www.cnblogs.com/taoyuxin/p/13277995.html