题目
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.
根据数独规则,判断行、列、子矩阵
代码
import java.util.HashSet; public class ValidSudoku { public boolean isValidSudoku(char[][] board) { int N = board.length; int subSize = (int) Math.sqrt(N); // row for (int i = 0; i < N; ++i) { HashSet<Character> set = new HashSet<Character>(); for (int j = 0; j < N; ++j) { char c = board[i][j]; if (c != ‘.‘) { if (set.contains(c)) { return false; } set.add(c); } } } // column for (int j = 0; j < N; ++j) { HashSet<Character> set = new HashSet<Character>(); for (int i = 0; i < N; ++i) { char c = board[i][j]; if (c != ‘.‘) { if (set.contains(c)) { return false; } set.add(c); } } } // subboard for (int i = 0; i < N; ++i) { int originRow = (i / subSize) * subSize; int originColumn = (i % subSize) * subSize; HashSet<Character> set = new HashSet<Character>(); for (int j = 0; j < N; ++j) { int row = originRow + j / subSize; int column = originColumn + j % subSize; char c = board[row][column]; if (c != ‘.‘) { if (set.contains(c)) { return false; } set.add(c); } } } return true; } }
LeetCode | Valid Sudoku,布布扣,bubuko.com
原文:http://blog.csdn.net/perfect8886/article/details/22979659