36. Valid Sudoku
来源:互联网 发布:炒股软件上市公司 编辑:程序博客网 时间:2024/06/05 10:06
problem:
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 '.'
.
该问题是判断该数独盘是否合理,不用考虑最后能不能求解。
考虑3个方便。第一是每行没有数字重复,第二是每列没有数字重复,第三是每个3*3的方框里面无数字重复。
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { if (board.empty()) return false; int size = board.size(); vector<int> count; //考虑每行 for (int i = 0; i < size; ++i) { count.assign(9, 0); for (int j = 0; j < size; j++) { if (board[i][j] != '.') { int pos = board[i][j] - '1'; if (count[pos] > 0) return false; else ++count[pos]; } continue; } } //考虑每列 for (int j = 0; j < size; ++j) { count.assign(9, 0); for (int i = 0; i < size; i++) { if (board[i][j] != '.') { int pos = board[i][j] - '1'; if (count[pos] > 0) return false; else ++count[pos]; } continue; } } //考虑每3*3的方块内 for (int i = 0; i < size; i += 3) { for (int j = 0; j < size; j += 3) { count.assign(9, 0); for (int row = i; row < i + 3;row++) for (int col = j; col < j + 3; col++) { if (board[row][col] != '.') { int pos = board[row][col] - '1'; if (count[pos] > 0) return false; else ++count[pos];; } else continue; } } } return true; }};
0 0
- [LeetCode]36.Valid Sudoku
- 36. Valid Sudoku
- LeetCode --- 36. Valid Sudoku
- LeetCode 36.Valid Sudoku
- [Leetcode] 36. Valid Sudoku
- 36. Valid Sudoku
- 【leetcode】36. Valid Sudoku
- 36. Valid Sudoku
- 36. Valid Sudoku
- [leetcode] 36. Valid Sudoku
- Leetcode 36. Valid Sudoku
- 36. Valid Sudoku
- 36. Valid Sudoku LeetCode
- 36. Valid Sudoku
- 36. Valid Sudoku
- 36. Valid Sudoku
- 36. Valid Sudoku
- 36. Valid Sudoku
- 纯js写俄罗斯方块
- 字符串删子字串
- 对ChemDraw Professional 16.0你了解多少
- 宽带篇(5.2)-02. 固定IP宽带 ❀ 飞塔 (Fortinet) 防火墙
- 接口限流算法总结
- 36. Valid Sudoku
- CI框架(ajax分页,全选,反选,不选,批量删除)
- C++实现全局可读,特定类可写
- SQL Server 中 RAISERROR 的用法(转)
- PHP八种数据类型
- Maven笔记-构建
- http
- NOIP 提高组 初赛 三、问题求解 习题集(二)NOIP2000-NOIP2005
- Oracle中的日期和字符串互相转换