1+ class Solution {
2+ private fun BooleanArray.clear () {
3+ for (i in indices) {
4+ this [i] = false
5+ }
6+ }
7+ 8+ fun isValidSudoku (board : Array <CharArray >): Boolean {
9+ val isFilled = BooleanArray (10 )
10+ 11+ for (row in board) {
12+ isFilled.clear()
13+ 14+ for (char in row) {
15+ if (char == ' .' ) {
16+ continue
17+ }
18+ 19+ val number = char.digitToInt()
20+ if (isFilled[number]) {
21+ return false
22+ }
23+ isFilled[number] = true
24+ }
25+ }
26+ 27+ for (x in 0 until 9 ) {
28+ isFilled.clear()
29+ 30+ for (y in 0 until 9 ) {
31+ val char = board[y][x]
32+ 33+ if (char == ' .' ) {
34+ continue
35+ }
36+ 37+ val number = char.digitToInt()
38+ if (isFilled[number]) {
39+ return false
40+ }
41+ isFilled[number] = true
42+ }
43+ }
44+ 45+ for (gridY in 0 until 3 ) {
46+ for (gridX in 0 until 3 ) {
47+ isFilled.clear()
48+ 49+ val startY = gridY * 3
50+ val startX = gridX * 3
51+ for (y in startY until startY + 3 ) {
52+ for (x in startX until startX + 3 ) {
53+ val char = board[y][x]
54+ 55+ if (char == ' .' ) {
56+ continue
57+ }
58+ 59+ val number = char.digitToInt()
60+ if (isFilled[number]) {
61+ return false
62+ }
63+ isFilled[number] = true
64+ }
65+ }
66+ }
67+ }
68+ 69+ return true
70+ }
71+ }
0 commit comments