有效的数独
初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次
输入:board =
[["8","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"]]
输出:false
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。 但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。
使用哈希表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Solution: def isValidSudoku( self , board: List [ List [ str ]]) - > bool : row = [[ 0 ] * 10 for _ in range ( 9 )] colums = [[ 0 ] * 10 for _ in range ( 9 )] boxs = [[ 0 ] * 10 for _ in range ( 9 )] num = 0 for i in range ( 9 ): for j in range ( 9 ): num = board[i][j] if num = = '.' : continue num = int (num) if row[i][num] = = 1 or colums[j][num] = = 1 or boxs[j / / 3 + (i / / 3 ) * 3 ][num] = = 1 : return False else : row[i][num] = 1 colums[j][num] = 1 boxs[j / / 3 + (i / / 3 ) * 3 ][num] = 1 return True |
方法二:分别对行、列、小盒子进行遍历:
class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: for i in range(9): stor = [] for j in range(9): if board[i][j] == '.': continue if board[i][j] in stor: return False else: stor.append(board[i][j]) for i in range(0,9): stor = [] for j in range(0,9): if board[j][i] =='.': continue if board[j][i] in stor: return False else: stor.append(board[j][i]) for i in range(0,9,3): for j in range(0,9,3): stor = [] for x in range(i,i+3): for y in range(j,j+3): if board[x][y] == '.': continue if board[x][y] in stor: return False else: stor.append(board[x][y]) return True
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理