Valid Sudoku :from LeetCode
来源:互联网 发布:人之无情乃可至于是乎 编辑:程序博客网 时间:2024/05/17 05:11
题目大意:给你一个数独矩阵,判断是否为合法的数独矩阵。只需要检测每行,每列,每个子方格有没有重复的数字即可。
下面提供AC代码,代码有几点在面试的时候应该是要规避的!第一是函数功能分的不够细,判断行是否合法的函数应该只判断一行的数据是否合法,同样判断子方格的函数应该只判断一个子方格是否合法。其他的控制过程应该放在主函数中。这里为了简化编写过程就偷了懒了,其实是不对的。
class Solution {public: bool clon(vector<vector<char> > &board) { bool num[10]; for(int i=0;i<9;i++) { memset(num,false,sizeof(num)); for(int j=0;j<9;j++) { int pt=board[i][j]-'0';; if(pt>0 && pt<10) { if(num[pt])return false; num[pt]=true; } } }; return true; }; bool rown(vector<vector<char> > &board) { bool num[10]; for(int i=0;i<9;i++) { memset(num,false,sizeof(num)); for(int j=0;j<9;j++) { int pt=board[j][i]-'0';; if(pt>0 && pt<10) { if(num[pt])return false; num[pt]=true; } } }; return true; }; bool box(vector<vector<char> > &board) { bool num[10]; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { int x=i*3,y=j*3; memset(num,false,sizeof(num)); for(int m=x;m<x+3;m++) { for(int n=y;n<y+3;n++) { int pt=board[m][n]-'0'; if(pt>0 && pt<10) { if(num[pt])return false; num[pt]=true; } } } } }; return true; } bool isValidSudoku(vector<vector<char> > &board) { if(!clon(board))return false; if(!rown(board))return false; if(!box(board))return false; return true; }};
0 0
- Valid Sudoku :from LeetCode
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- LeetCode : Valid Sudoku
- [LeetCode]Valid Sudoku
- [leetcode] Valid Sudoku
- LeetCode-Valid Sudoku
- LeetCode Valid Sudoku
- LeetCode - Valid Sudoku
- LeetCode:Valid Sudoku
- leetcode-036:Valid Sudoku
- Leetcode: Valid Sudoku
- LeetCode题解:Valid Sudoku
- 【LeetCode】 Valid Sudoku
- Leetcode Valid Sudoku
- LeetCode | Valid Sudoku
- LeetCode Valid Sudoku
- thinkphp中URL操作
- 局域网中,把数台电脑上的文件,通过一台VSFTP服务器一起对外发布,有几种方法?
- 单调递增子序列
- 一个例子掌握FIFO通信
- libevent的select backend的fd_set分配分析
- Valid Sudoku :from LeetCode
- Facebook揭秘HipHop项目 PHP程序大提速
- JQuery之初探
- ZOJ-1842
- ARM处理器学习之--GPIO操作篇
- C++Primer 顺序容器
- 第四周:图的表示
- ARM 汇编语言源代码行的语法规则
- 第四周作业——图的表示