LeetCode 有效的数独

题目:

判断一个数独是否有效,根据:Sudoku Puzzles - The Rules

数独部分填了数字,空的部分用 '.' 表示。

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


说明:
一个有效的数独(填了一部分的)不一定是可解的,只要已经填的数字是有效的即可。

解题:判断一个数独是否有效,只要判断每一个行、列、方格有没有重复的数字;通过Set集合来存储每一行的数字;

代码:

class Solution {
    public boolean isValidSudoku(char[][] board) {
        if(null == board || board.length < 9){
            return false;
        }
        
        Set<Character> rowSet = new HashSet<Character>();
        Set<Character> colSet = new HashSet<Character>();
        Set<Character> cardSet = new HashSet<Character>();
        
        for(int i=0;i<9;i++){
            rowSet.clear();
            colSet.clear();
            cardSet.clear();
            for(int j=0;j<9;j++){
                
                if(rowSet.contains(board[i][j])){
                    return false;
                }else{
                    if(board[i][j] != '.'){
                        rowSet.add(board[i][j]);
                    }
                }
                
                if(colSet.contains(board[j][i])){
                    return false;
                }else{
                    if(board[j][i] != '.'){
                        colSet.add(board[j][i]);
                    }
                }
          // 计算九宫格的行列下标
int r = j/3+i/3*3; int c = (j%3+i*3) % 9; if(cardSet.contains(board[r][(c)])){ return false; }else{ if(board[r][c] != '.'){ cardSet.add(board[r][c]); } } } } return true; } }
原文地址:https://www.cnblogs.com/xiangaaa/p/8688707.html