zoukankan      html  css  js  c++  java
  • Leetcode Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

    The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

    A partially filled sudoku which is valid.

    Note:
    A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

    玩过九宫格的都应该知道规则(没玩过的可以试玩一下九宫格

    (1)每行1~9各出现一次

    (2)每列1~9各出现一次

    (3)每个小的3宫格,1~9各出现一次

    class Solution {
    public:
    
        bool isValidRow(vector<vector<char> >& board){
            for(int row = 0; row < 9; ++ row){
                vector<int> cnt(10,0);
                for(int col = 0; col < 9; ++ col){
                    char item = board[row][col];
                    if(item != '.'){
                        if(cnt[item-'0']!=0) return false;
                        else cnt[item-'0']++;
                    }
                }
            }
            return true;
        }
        
        bool isValidCol(vector<vector<char> >& board ){
            for(int col = 0; col < 9; ++ col){
                vector<int> cnt(10,0);
                for(int row = 0; row < 9; ++ row){
                    char item = board[row][col];
                    if(item != '.'){
                        if(cnt[item-'0']!=0) return false;
                        else cnt[item-'0']++;
                    }
                }
            }
            return true;
        }
        
        bool isValidBox(vector<vector<char> >& board){
            for(int i = 0 ; i < 3; ++ i){
                for(int j = 0 ; j < 3; ++ j){
                    vector<int> cnt(10,0);
                    for(int row = 3*i;row < 3*i+3; ++row){
                        for(int col = 3*j; col < 3*j+3; ++col){
                            char item = board[row][col];
                            if(item != '.'){
                                if(cnt[item-'0']!=0) return false;
                                else cnt[item-'0']++;
                            }
                        }
                    }
                }
            }
            return true;
        }
    
        bool isValidSudoku(vector<vector<char> > &board) {
            return isValidRow(board)&&isValidCol(board)&&isValidBox(board);
        }
    };
  • 相关阅读:
    中国象棋评估函数建模
    C语言中指针变量传参
    STM32外部中断
    C语言中的注释
    STM32学习网址
    C语言中的布尔值
    更改KEIL背景配色
    Modbus通讯协议
    DUP
    算法的时间复杂度
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3830416.html
Copyright © 2011-2022 走看看