【LeetCode】数独系列

来源:互联网 发布:大数据顾客需求 编辑:程序博客网 时间:2024/05/22 17:02

36. Valid Sudoku

题目:判断数独是否合法,只需行、列、块均没有重复数字即可。

思路:HashSet——利用i和j,分别构造行列和块。i代表行,j代表列,即可构造每行的情况;i代表列,j代表行,即可构造每列的情况;利用i构造每块的首个元素编号,代表每个块,再利用j构造块中的每个元素。很机智的做法,就不需要设置很多HashSet。

public class Solution {    public boolean isValidSudoku(char[][] board) {        for(int i = 0; i<9; i++){            HashSet<Character> rows = new HashSet<Character>();            HashSet<Character> columns = new HashSet<Character>();            HashSet<Character> cube = new HashSet<Character>();            for (int j = 0; j < 9;j++){                if(board[i][j]!='.' && !rows.add(board[i][j]))                    return false;                if(board[j][i]!='.' && !columns.add(board[j][i]))                    return false;                int RowIndex = 3*(i/3);                int ColIndex = 3*(i%3);                if(board[RowIndex + j/3][ColIndex + j%3]!='.' && !cube.add(board[RowIndex + j/3][ColIndex + j%3]))                    return false;            }        }        return true;    }}


0 0
原创粉丝点击