1. 程式人生 > >swift 有效的數獨 - LeetCode

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
    }
}