36. Valid Sudoku
给你一个二维字符阵列表示一个数独,包含1~9和表示空白的.字符,一个合法数独
满足以下条件:
1.每行和每列最多出现一种数字一次
2.一个3x3九宫格内只会出现一种数字一次
3.数独可能无解(无法填满数字),但是只有满足1或2才是Invalid
判断给定的棋盘是否是一个合法数独
Example:
https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png
Input: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: true
思路:
1.从左上角的点开始往右和往下检查是否有重复数字,上和左不用检查因为已经检查过了
每个点都检查了之后到第二步骤
2.遍历每个九宫格的左上角座标,并用一个set检查3x3范围是否有重复数字。
JavaCode: