leetcode第一刷_Valid Sudoku
来源:互联网 发布:销售公司数据流程图 编辑:程序博客网 时间:2024/05/21 17:20
一开始没看清题,以为让当场求数独呢,吓得一直没敢做。后来发现这个题原来如此之简单,只要判断现在棋盘上的数字满不满足情况要求就可以了。
这不就是三次循环吗。。看看每一行满不满足,每一列满不满足,每个小的3*3的格子满不满足就行了。每个小3*3格子我是用求得左上角的方法来验证的。
其实觉得数独难还有一个原因是记得他在编程之美上出现过。。那上面讨论的主要是怎样构造一个数独,具体记不太清楚了,印象最深的是,要想保证有解,最好的办法是先用置换法生成一个解,然后去掉这个解中的一些位置。
class Solution {public: bool isValidSudoku(vector<vector<char> > &board) { bool vis[10]; for(int start=0;start<9;start++){ int i = start/3, j = start%3; memset(vis, 0, sizeof(vis)); for(int k=0;k<9;k++){ int ii=i*3+k/3, jj=j*3+k%3; if(board[ii][jj] == '.') continue; if(vis[board[ii][jj]-'0']) return false; else vis[board[ii][jj]-'0'] = 1; } } for(int i=0;i<9;i++){ memset(vis, 0, sizeof(vis)); for(int j=0;j<9;j++){ if(board[i][j]=='.') continue; if(vis[board[i][j]-'0']) return false; vis[board[i][j]-'0'] = 1; } } for(int i=0;i<9;i++){ memset(vis, 0, sizeof(vis)); for(int j=0;j<9;j++){ if(board[j][i]=='.') continue; if(vis[board[j][i]-'0']) return false; vis[board[j][i]-'0'] = 1; } } return true; }};
0 0
- leetcode第一刷_Valid Sudoku
- leetcode第一刷_Valid Palindrome
- leetcode第一刷_Valid Number
- leetcode第一刷_Valid Parentheses
- 0036_Valid Sudoku
- 【LeetCode】125_Valid Palindrome
- 【LeetCode】20_Valid Parentheses
- leetcode 019_Valid Parentheses
- LeetCode 20_Valid Parentheses
- [LeetCode]20_Valid Parentheses
- leetCode SudoKu
- leetcode sudoku
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- LeetCode刷题笔录Sudoku Solver
- leetcode刷题系列C++-valid sudoku
- LeetCode : Valid Sudoku
- Cookie和Session
- 简单游戏外挂,植物大战僵尸外挂,附cpp源代码
- 算法导论习题4-5:芯片检测
- 文件搜索(很实用)
- iOS开发中的单元测试(三)——URLManager中的测试用例解析
- leetcode第一刷_Valid Sudoku
- 将任意数转换为十六进制
- Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion
- Flex访问SQL Server数据库的方法
- 关于java中JDialog的阻塞设置问题
- Codeforces Round #245 (Div. 1) A /(Div.2 C) Xor-tree
- 四次挥手
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- 使用JdbcTemplate 向ORACLE插入大文本CLOB数据的方法