Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- bool isValidSudoku(vector<vector<char>>& board)
- {
- uint8_t i = 0, j = 0, k = 0, l = 0, x = 0, y = 0;
- vector<char> blk;
- //todo: check sizes of vectors
- //rows
- for(i = 0; i < 9; ++i)
- {
- if(!isValidBlk(board[i]))
- {
- return false;
- }
- }
- //cols
- for(i = 0; i < 9; ++i)
- {
- blk.clear();
- for(j = 0; j < 9; ++j)
- {
- blk.push_back(board[i][j]);
- }
- if(!isValidBlk(blk))
- {
- return false;
- }
- }
- //boxes
- // i,j
- // 0,0 1,0 2,0
- // 0,1 1,1 2,1
- // 0,2 1,2 2,2
- for(i = 0; i < 3; ++i)
- {
- blk.clear();
- y = 3 * i;
- for(j = 0; j < 3; ++j)
- {
- x = 3 * j;
- for(k = 0; k < 3; ++k)
- {
- for(l = 0; l < 3; ++l)
- {
- blk.push_back(board[x+k][y+l]);
- }
- }
- }
- if(!isValidBlk(blk))
- {
- return false;
- }
- }
- return true;
- }
- private:
- bool isValidBlk(vector<char>& blk)
- {
- char values[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- uint8_t index = 0, i;
- for(i = 0; i < 9; ++i)
- {
- index = isValidNum(blk[i]) ? (blk[i] - '0') : 0;
- if(index && //only check if not '.' (short circuit)
- values[index] == 0)
- {
- return false;
- }
- values[index] = 0;
- }
- return true;
- }
- bool isValidNum(uint8_t input) {
- if (input >= '1' && input <= '9')
- {
- return true;
- }
- return false;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement