Leetcode——36. Valid Sudoku
来源:互联网 发布:淘宝店铺页头怎么添加 编辑:程序博客网 时间:2024/05/16 16:15
题目
https://leetcode.com/problems/valid-sudoku/
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:
解答
判断一个数独是否有效,开始时理解错题意了,这里只管数独是否有效,而不需要关心填上的数字是否能解开这个数独。
所以就是判断每行,每列,每块不能有重复数字。O(N^2)。
其中第二个方法是bit操作,有意思!
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { bool num1[9][9]={0},num2[9][9]={0},num3[9][9]={0}; for(int i=0;i<board.size();i++) for(int j=0;j<board.size();j++) { if(board[i][j]!='.') { int num=board[i][j]-'0'-1;//减一是为了换算到下标 int k=i/3*3+j/3;//这一步很巧妙!!!把整个数独分成八块,每一块用k表示 if(num1[i][num]||num2[j][num]||num3[k][num])//已经出现重复的了,不是valid数独 return false; num1[i][num]=1,num2[j][num]=1,num3[k][num]=1; } } return true; } //bit操作 bool isValidSudoku1(vector<vector<char>>& board) { vector<short> col(9, 0); vector<short> block(9, 0); vector<short> row(9, 0); for (int i = 0; i < 9; i++) for (int j = 0; j < 9; j++) { if (board[i][j] != '.') { int idx = 1 << (board[i][j] - '0'); if (row[i] & idx || col[j] & idx || block[i/3 * 3 + j / 3] & idx) return false; row[i] |= idx; col[j] |= idx; block[i/3 * 3 + j/3] |= idx; } } return true; }};
0 0
- Valid Sudoku —Leetcode
- Leetcode——36. Valid Sudoku
- LeetCode——Valid Sudoku
- leetcode——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
- 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
- spring-mvc框架下载
- Maven版本校验 Version Range的支持
- Ubuntu16.10 下安装node.js提示./configure 权限不够的解决方法
- Myeclipse将控制台日志输出到文件中和显示更多的日志信息
- Activiti 自定义事件监听和邮件通知
- Leetcode——36. Valid Sudoku
- Mysql事务以及加锁机制事务的特征ACID
- 类成员函数作为线程函数使用
- iPhone之为UIView设置阴影(CALayer的shadowColor,shadowOffset,shadowOpacity,shadowRadius,shadowPath属性)
- 移动端开发基础之适配
- elasticsearch5.1.1搭建环境
- 12.安卓Handler处理消息
- jquery trigger()事件报错,Uncaught RangeError: Maximum call stack size exceeded。
- faster rcnn windows 下c++版本