swift 有效的数独 - LeetCode

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

上图是一个部分填充的有效的数独。

数独部分空格内已填入了数字,空白格用 '.' 表示。

说明:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 给定数独序列只包含数字 1-9 和字符 '.' 。
  • 给定数独永远是 9x9 形式的。
class Solution {
    func isValidSudoku(_ board: [[Character]]) -> Bool {
        for i in 0..<9 {
            var row = [Character: Int]()
            var col = [Character: Int]()
            var cube = [Character: Int]()
            for j in 0..<9 {
                //行
                if board[i][j] != "." {
                    if row[board[i][j]] == 1 {
                        return false
                    }else {
                        row[board[i][j]] = 1
                    }
                }
                //列
                if board[j][i] != "." {
                    if col[board[j][i]] == 1 {
                        return false
                    }else {
                        col[board[j][i]] = 1
                    }
                }
                //宫
                let cubeX = 3 * (i/3) + j/3
                let cubeY = 3 * (i%3) + j%3
                if board[cubeX][cubeY] != "." {
                    if cube[board[cubeX][cubeY]] == 1 {
                        return false
                    }else {
                        cube[board[cubeX][cubeY]] = 1
                    }
                }
                
                
                
            }
        }
        return true
    }
}

猜你喜欢

转载自blog.csdn.net/shashen12300/article/details/82423885