36. Valid Sudoku

数独判断。。

楞做。。

Time: O(k²) k = length of board (9)
space: O(k)

public class Solution {
    public boolean isValidSudoku(char[][] board) {
        if (board.length == 0) return true;
        Set<Character> set = new HashSet<>();
        
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if (board[i][j] != '.') {
                    if (!set.add(board[i][j])) return false;
                }
            }
            set.clear();
        }
        
        for (int i = 0; i < board[0].length; i++) {
            for (int j = 0; j < board.length; j++) {
                if (board[j][i] != '.') {
                    if (!set.add(board[j][i])) return false;
                }
            }
            set.clear();
        }
        
        for (int i = 0; i < board.length; i += 3) {
            for (int j = 0; j < board[0].length; j += 3) {
                for (int m = i; m < i + 3; m++) {
                    for (int n = j; n < j + 3; n++) {
                        if (board[m][n] != '.') {
                            if (!set.add(board[m][n])) return false;
                        }
                    }
                }
                set.clear();
            }
        }
        
        return true;
    }
}
posted @ 2016-11-05 08:12  哇呀呀..生气啦~  阅读(82)  评论(0)    收藏  举报