LeetCode 36. Valid Sudoku
来源:互联网 发布:linux make命令安装 编辑:程序博客网 时间:2024/06/05 00:56
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.
这个题的难度在于找出board[i][j]位于哪个正方形
观察行号规律:
第0个九宫格:000111222; 第1个九宫格:000111222; 第2个九宫格:000111222;
第3个九宫格:333444555; 第4个九宫格:333444555; 第5个九宫格:333444555;
第6个九宫格:666777888; 第7个九宫格:666777888; 第8个九宫格:666777888;
可见对于每三个九宫格行号增3;对于单个九宫格,每三个格点行号增1。
因此第i个九宫格的第j个格点的行号可表示为i/3*3+j/3
观察列号规律:
第0个九宫格:012012012; 第1个九宫格:345345345; 第2个九宫格:678678678;
第3个九宫格:012012012; 第4个九宫格:345345345; 第5个九宫格:678678678;
第6个九宫格:012012012; 第7个九宫格:345345345; 第8个九宫格:678678678;
可见对于下个九宫格列号增3,循环周期为3;对于单个九宫格,每个格点行号增1,周期也为3。
周期的数学表示就是取模运算mod。
因此第i个九宫格的第j个格点的列号可表示为i%3*3+j%3
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int flag_1[9][9] = {0}, flag_2[9][9] = {0}, flag_3[9][9] = {0}; for(int i = 0; i < board.size(); ++ i) for(int j = 0; j < board[i].size(); ++ j) if(board[i][j] != '.') { int num = board[i][j] - '0' - 1, k = i / 3 * 3 + j / 3; /* if(flag_1[i][num] || flag_2[j][num] || flag_3[k][num]) return false; flag_1[i][num] = flag_2[j][num] = flag_3[k][num] = 1; */ if (flag_1[i][num] == 0) flag_1[i][num] = 1; else return false; if (flag_2[j][num] == 0) flag_2[j][num] = 1; else return false; if (flag_3[k][num] == 0) flag_3[k][num] = 1; else return false; } return true; }};
- [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
- 36. Valid Sudoku LeetCode
- leetcode 36. Valid Sudoku
- LeetCode *** 36. Valid Sudoku
- leetcode 36. Valid Sudoku
- [LeetCode]36. Valid Sudoku
- LeetCode 36. Valid Sudoku
- leetcode-36. Valid Sudoku
- 36.[Leetcode]Valid Sudoku
- Leetcode 36.Valid Sudoku
- LeetCode-36.Valid Sudoku
- leetcode 36. Valid Sudoku
- maven 相关
- 底部栏
- Python日期时间函数(推荐)
- Java实现抓取百度识图结果的实现和思路-1-创造百度识图的URL链接
- git中常用快捷键
- LeetCode 36. Valid Sudoku
- java预研实现多线程有两中途径
- 丑树
- 数理逻辑2 -- 量化理论4
- HDU1098 Ignatius's puzzle
- Nginx均衡2台LAMP+Redis企业主从实战
- 第四章 后台传值并跳转jsp-跟赵大笨笨学SpringMVC
- JavaScript——DOM操作
- 2.Git初始化