使用kotlin完成这个题目:36. 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注意: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有效即可。 空白格用 '.' 表示。
时间: 2024-03-22 15:42:28 浏览: 22
以下是使用 Kotlin 实现的代码:
```kotlin
class Solution {
fun isValidSudoku(board: Array<CharArray>): Boolean {
val rows = Array(9) { BooleanArray(9) }
val cols = Array(9) { BooleanArray(9) }
val boxes = Array(9) { BooleanArray(9) }
for (i in 0..8) {
for (j in 0..8) {
val c = board[i][j]
if (c != '.') {
val num = c - '1'
val boxIndex = (i / 3) * 3 + j / 3
if (rows[i][num] || cols[j][num] || boxes[boxIndex][num]) {
return false
}
rows[i][num] = true
cols[j][num] = true
boxes[boxIndex][num] = true
}
}
}
return true
}
}
```
我们定义三个数组 `rows`、`cols`、`boxes` 来分别记录行、列、宫内的数字出现情况。外层循环遍历行,内层循环遍历列,对于每个格子,如果它是数字,则判断该数字在当前行、列、宫内是否已经出现过,如果出现过则返回 `false`,否则将该数字在行、列、宫内的出现情况标记为已出现。最后返回 `true` 表示数独有效。