Open wengzc opened 3 years ago
思路分析:直接拿 37. 解数独 的 isValid 函数遍历二维数组 board 进行判断
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function (board) {
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
if (board[i][j] !== '.') {
if (!isValid(board, i, j, board[i][j])) return false
}
}
}
return true
// 判断 board[i][j] 是否有效
function isValid(board, row, column, c) {
for (let i = 0; i < 9; i++) {
// 判断行是否重复
if (column !== i && board[row][i] === c) return false
// 判断列是否重复
if (row !== i && board[i][column] === c) return false
// 判断 3 x 3 方框是否存在重复
let m = Math.floor(row / 3) * 3 + Math.floor(i / 3)
let n = Math.floor(column / 3) * 3 + i % 3
if (m !== row && n !== column && board[m][n] === c) return false
}
return true
}
};
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字
1-9
在每一行只能出现一次。 数字1-9
在每一列只能出现一次。 数字1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用
'.'
表示。示例 1:
示例 2:
说明:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
给定数独序列只包含数字
1-9
和字符'.'
。给定数独永远是
9x9
形式的。题目链接:https://leetcode-cn.com/problems/valid-sudoku