Valid Sudoku - LeetCode 36
来源:互联网 发布:c语言如何输入多个数据 编辑:程序博客网 时间:2024/06/11 18:58
题目描述: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) 每一个九宫格中1-9之间的数字最多只出现一次,
题意很直白,只需要判断是否满足以上三个条件,若均满足,则视为valid。
以下是C++实现代码:
class Solution {public: bool markUsed(vector<char> vec) /* 判断是否只包含1-9,且每个数最多只出现一次,若是,则返回true */ { int mark[10] = {0}; vector<char>::iterator itr; for(itr=vec.begin(); itr != vec.end();itr++) { if(*itr != '.') { if((*itr - '0' > 0 && *itr-'0' <10))++mark[*itr - '0']; } if(mark[*itr - '0'] > 1) return false; } return true; } bool isValidSudoku(vector<vector<char> > &board) { /* rows:判断每行是否只包含1-9之间的数最多一次 */vector<vector<char>>::iterator iter;for(iter = board.begin(); iter != board.end(); iter++){if( !markUsed(*iter)) /*每一行判断,若不满足条件,则立即退出,返回false */return false;} /*colum:判断每列是否只包含1-9之间的数最多一次 */for(int i = 0; i < 9;i++){ vector<char> tmpv;for(int j = 0;j < 9; j++){ tmpv.push_back(board[j][i]);}if(!markUsed(tmpv)) /*每一列判断,若不满足条件,则立即退出,返回false */return false;}/* each block:判断每个9宫格是否只包含1-9之间的数最多一次 */for(int k = 0; k < 3; k++) /* 行号分成3块,每块大小为3 */{for(int h = 0; h < 3; h++) /*列号分为3块,没块大小为3*/{vector<char> tmpv;for(int row = k * 3; row < k * 3 + 3; row++) /* 行 */{for(int col = h * 3; col < h * 3 + 3; col++) /* 列 */{tmpv.push_back(board[row][col]);}}if(!markUsed(tmpv)) /* 每一个九宫格判断,若不满足条件,则立即退出,返回false */return false;}}return true; }};
0 0
- [leetcode 36] Valid Sudoku
- leetcode 36: Valid Sudoku
- LeetCode(36) Valid Sudoku
- leetcode-36 Valid Sudoku
- Valid Sudoku - LeetCode 36
- LeetCode 36 Valid Sudoku
- LeetCode---(36) Valid Sudoku
- Leetcode 36 Valid Sudoku
- Leetcode[36]-Valid Sudoku
- leetcode 36: Valid Sudoku
- Leetcode# 36 Valid Sudoku
- Leetcode#36||Valid Sudoku
- leetcode-36 Valid Sudoku
- leetcode 36:Valid Sudoku
- LeetCode 36: Valid Sudoku
- [leetcode 36] Valid Sudoku
- 【LEETCODE】36-Valid Sudoku
- Leetcode 36 - Valid Sudoku
- local variable 'xxx' referenced before assignment
- Unity3D协程学习
- MySQl学习记录3 :查询笔记
- 深入理解 CSS3 弹性盒布局模型
- Java读书笔记06 继承
- Valid Sudoku - LeetCode 36
- android ViewPager详解
- Smarty模板学习笔记
- Jackson的使用和JSON日期类型的显示
- 文章标题
- 用例
- Java读书笔记07 反射
- 转发参数包
- 运行时机制runtime