前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021-09-22:请你判断一个 9x9 的数独是否有效。只需要 根

2021-09-22:请你判断一个 9x9 的数独是否有效。只需要 根

原创
作者头像
福大大架构师每日一题
修改2021-09-23 14:48:09
6250
修改2021-09-23 14:48:09
举报
文章被收录于专栏:福大大架构师每日一题

2021-09-22:请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。

福大大 答案2021-09-22:

同行同列同宫。重复出现,返回false;否则返回true。

时间复杂度:O(1)。

空间复杂度:O(1)。

代码用golang编写。代码如下:

代码语言:txt
复制
package main

import "fmt"

func main() {
    board := [][]byte{
        {'5', '3', '.', '.', '7', '.', '.', '.', '.'},
        {'6', '.', '.', '1', '9', '5', '.', '.', '.'},
        {'.', '9', '8', '.', '.', '.', '.', '6', '.'},
        {'8', '.', '.', '.', '6', '.', '.', '.', '3'},
        {'4', '.', '.', '8', '.', '3', '.', '.', '1'},
        {'7', '.', '.', '.', '2', '.', '.', '.', '6'},
        {'.', '6', '.', '.', '.', '.', '2', '8', '.'},
        {'.', '.', '.', '4', '1', '9', '.', '.', '5'},
        {'.', '.', '.', '.', '8', '.', '.', '7', '9'},
    }
    ret := isValidSudoku(board)
    fmt.Println(ret)

}

func isValidSudoku(board [][]byte) bool {
    row := make([][]bool, 9)
    for i := 0; i < 9; i++ {
        row[i] = make([]bool, 10)
    }
    col := make([][]bool, 9)
    for i := 0; i < 9; i++ {
        col[i] = make([]bool, 10)
    }
    bucket := make([][]bool, 9)
    for i := 0; i < 9; i++ {
        bucket[i] = make([]bool, 10)
    }
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            bid := 3*(i/3) + (j / 3)
            if board[i][j] != '.' {
                num := board[i][j] - '0'
                if row[i][num] || col[j][num] || bucket[bid][num] {
                    return false
                }
                row[i][num] = true
                col[j][num] = true
                bucket[bid][num] = true
            }
        }
    }
    return true
}

执行结果如下:

图片
图片

左神java代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档