LeetCode--No.36--Valid Sudoku

来源:互联网 发布:csol由于网络设定问题 编辑:程序博客网 时间:2024/06/05 11:09

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 '.'.


A partially filled sudoku which is valid.

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

Subscribe to see which companies asked this question

这可能是我目前为止最讨厌的一道题。。。不知道为啥。。就是觉得很讨厌嗯嗯嗯

代码参考自:http://www.jiuzhang.com/solutions/valid-sudoku/
需要注意的是:
1. Arrays.fill(visited, boolean)
2. 每一个3*3的小方块,遍历的时候需要注意一下技巧。

public class Solution {    public boolean isValidSudoku(char[][] board) {        boolean[] visited = new boolean[9];        for(int i = 0; i < 9; i++){            Arrays.fill(visited, false);            for(int j = 0; j < 9; j++){                if (!isVisited(visited, board[i][j]))                    return false;            }        }        for(int i = 0; i < 9; i++){            Arrays.fill(visited, false);            for(int j = 0; j < 9; j++){                if(!isVisited(visited, board[j][i]))                    return false;            }        }        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(!isVisited(visited, board[i+k/3][j+k%3]))                        return false;                }            }        }        return true;    }    public boolean isVisited(boolean[] visited, char digit){        if (digit == '.')            return true;        int num = digit - '0';        if(num < 1 || num > 9 || visited[num-1])            return false;        visited[num-1] = true;        return true;    }}


0 0
原创粉丝点击