Valid Sudoku

lc 36

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

查看是不是valid就是一行一行比较就行了

time complexity o(m + n + mn) --> o(mn) space complexity o(9) --> constant time

public class Solution {
    public boolean isValidSudoku(char[][] board) {
        boolean[] visited = new boolean[9];

        //row
        for(int i = 0; i < 9; i++){
            Arrays.fill(visited, false);
            for(int j = 0; j < 9; j++){
                if(board[i][j] == '.') continue;
                int num = board[i][j] - '0';
                if(num < 1 || num > 9 ||visited[num - 1] == true){
                    return false;
                }else{
                    visited[num - 1] = true;
                }
            }
        }

        //column
        for(int i = 0; i < 9; i++){
            Arrays.fill(visited, false);
            for(int j = 0; j < 9; j++){
                if(board[j][i] == '.') continue;
                int num = board[j][i] - '0';
                 if(num < 1 || num > 9 ||visited[num - 1] == true){
                    return false;
                }else{
                    visited[num - 1] = true;
                }
            }
        } 


        //square
        for(int i = 0; i < 9; i+=3){
            for(int j = 0; j < 9; j+=3){
                Arrays.fill(visited, false);  
                for(int k = 0; k < 9; k++){ 
                    if(board[i + k / 3][j + k % 3] == '.') continue; 
                    int num = board[i + k /3][j + k % 3] - '0';
              if(num < 1 || num > 9 ||visited[num - 1] == true){
                        return false;
                    }else{
                        visited[num - 1] = true;
                    }
                }


            }

        }  


        return true;
    }
}

results matching ""

    No results matching ""