学院网站建设报告,钢筋网片规格,网站怎么找,长沙网络推广外包题目#xff1a; 有效的数独
描述#xff1a; 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 #xff0c;验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出…题目 有效的数独
描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。请参考示例图
注意
一个有效的数独部分已被填充不一定是可解的。 只需要根据以上规则验证已经填入的数字是否有效即可。 空白格用 ‘.’ 表示。 示例 1
输入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”]] 输出true leetcode链接 方法一模拟 对于数独规则可知对于每个元素在所在行列小33方格内仅能出现一次那么我们利用vector记录每个元素在行列小33方格出现的次数如果其中任意一个出现次数大于1次则数独不成立返回false.。 因此我们定义一个910的vector rows用来记录每一行每个数字出现的次数910的vector lines用来记录每一列每个数字出现的次数33的vector subbox用来记录每个方格每个数字出现的次数。 时间复杂度o(81) 矩阵每个元素仅遍历一次 空间复杂度o(390) 行列3*3方格都需要定义一个大小为10数字为1-9与下标对应的vector来记录数字出现的次数。 bool isValidSudoku(vectorvectorchar board) {vectorvectorint rows(9,vectorint(10,0));//记录每一行每个数字出现的次数vectorvectorint lines(9,vectorint(10,0));//记录每一列每个数字出现的次数//记录每个方格每个数字出现的次数vectorvectorvectorint subbox(3,vectorvectorint (3,vectorint(10,0)));for(int i0;i9;i){for(int j0;j9;j){if(board[i][j].){continue;}//如果行列方格有一个数字出现的次数大于1次那么该矩阵不满足数独if(rows[i][board[i][j]-0]1||lines[j][board[i][j]-0]1||subbox[i/3][j/3][board[i][j]-0]1){return false;}}}return true;}