[LeetCode] 036. Valid Sudoku (Easy) (C++)
指数:[LeetCode] Leetcode 解决问题的指数 (C++/Java/Python/Sql)
Github: https://github.com/illuz/leetcode
036. Valid Sudoku (Easy)
链接:
题目:https://leetcode.com/problems/valid-sudoku/
代码(github):https://github.com/illuz/leetcode
题意:
推断一个数独是否有效。
有效的数独不强求有解。
分析:
仅仅要同一行、列、块里没有同样数字即可了。
开个数组记录即可了。没什么难度。能够用二进制来表示。表位运算加速。
(注意是推断有效,不是有解,我刚開始给求解了,TLE 了好多次。
。
。)
代码:
C++:
class Solution {
private:
	int row[9], col[9], sqr[3][3];
	bool check(int x, int y, int val) {
		return !((row[x]>>val)&1) && !((col[y]>>val)&1) && !((sqr[x/3][y/3]>>val)&1);
	}
	void mark(int x, int y, int val) {
		row[x] |= (1<<val);
		col[y] |= (1<<val);
		sqr[x/3][y/3] |= (1<<val);
	}<pre name="code" class="java">//	求解 Sudoku
//	void unmark(int x, int y, int val) {
//		row[x] -= (1<<val);
//		col[y] -= (1<<val);
//		sqr[x/3][y/3] -= (1<<val);
//	}
//	bool dfs(int pos, vector<vector<char> > &board) {
//		// x = pos / 9, y = pos % 9
//		if (pos == 81)
//			return true;
//		if (board[pos/9][pos%9] != '.') {
//			return dfs(pos + 1, board);
//		} else {
//			for (int i = 0; i < 9; i++)
//				if (check(pos/9, pos%9, i)) {
//					mark(pos/9, pos%9, i);
//					if (dfs(pos + 1, board))
//						return true;
//					unmark(pos/9, pos%9, i);
//				}
//		}
//		return false;
//	}
public:
    bool isValidSudoku(vector<vector<char> > &board) {
		memset(row, 0, sizeof(row));
		memset(col, 0, sizeof(col));
		memset(sqr, 0, sizeof(sqr));
		for (int i = 0; i < board.size(); i++)
			for (int j = 0; j < board[i].size(); j++)
				if (board[i][j] != '.') {
					if (!check(i, j, board[i][j] - '1'))
						return false;
					mark(i, j, board[i][j] - '1');
				}
		return true;
		// return dfs(0, board);
    }
};
版权声明:本文博主原创文章,博客,未经同意不得转载。
[LeetCode] 036. Valid Sudoku (Easy) (C++)的更多相关文章
- LeetCode 036 Valid Sudoku
		
题目要求:Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudo ...
 - Java for LeetCode 036 Valid Sudoku
		
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
 - 【leetcode】Valid Sudoku  (easy)
		
题目:就是判断已有的数字是否冲突无效,若无效返回flase 有效返回true 不要求sudo可解 用了char型的数字,并且空格用‘.'来表示的. 思路:只要分别判断横向 竖向 3*3小块中的数字是否 ...
 - LeetCode:36. Valid Sudoku,数独是否有效
		
LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...
 - 【LeetCode】036. Valid Sudoku
		
题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...
 - leetCode 36.Valid Sudoku(有效的数独) 解题思路和方法
		
Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...
 - LeetCode 36 Valid Sudoku
		
Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...
 - 【leetcode】Valid Sudoku
		
题目简述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...
 - Java [leetcode 36]Valid Sudoku
		
题目描述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...
 
随机推荐
- OWIN与Katana
			
OWIN与Katana详解 前言 我胡汉三又回来了,!!!!, 最近忙成狗,实在没空写博文,实在对不起自己,博客园上逛了逛发现 我大微软还是很给力的 asp.net core 1.0 .net c ...
 - Ewebeditor最新漏洞和漏洞指数
			
Ewebeditor最新漏洞和漏洞指数[收集] 来源:转载作者:佚名时间:2009-06-03 00:04:26 下面文章收集转载于网络:) 算是比較全面的ewebeditor编辑器的漏洞收集,如今的 ...
 - [转载][NAS] 使用win8的“存储池”功能~
			
之前自己用DQ77KB搭建一个小存储系统(帖子链接:http://www.chiphell.com/thread-567753-1-1.html),一直使用intel主板带的软RAID功能构建RAID ...
 - 转: 第二章 IoC Annotation注入
			
http://blog.csdn.net/p_3er/article/details/9231307 1.命名空间 使用Annotation的方式,需要在spring的配置文件中配置命名空间.命名空间 ...
 - java反射机制性能优化
			
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.uti ...
 - 解决mysqldb查询大量数据导致内存使用过高的问题
			
1.源码 connection=MySQLdb.connect( host="thehost",user="theuser", passwd="the ...
 - ExtJS4 根据分配不同的树形菜单在不同的角色登录后
			
继续我的最后.建立cookie后,带他们出去 var userName = Ext.util.Cookies.get('userName'); var userAuthority = Ext.util ...
 - Excel一项研究指出色彩
			
Excel一项研究指出色彩 从Office2007跳到了2013版本号,尽管有着种种不适,但应该承认Excel2013版本号在图表和色彩上更加人性化和"专业"了一些. 但假设须要更 ...
 - redis源代码解读之内存管理————zmalloc文件
			
本文章主要记录本人在看redis源代码的一些理解和想法.由于功力有限,肯定会出现故障,所以.希望高手给出指正. 第一篇就是内存相关的介绍.由于我喜欢先看一些组件的东西,再看总体的流程. 先上一下代码吧 ...
 - c语言实现hashtable,相似C++的map和iOS的NSDictionary
			
跟线性数组和链表不同.HashTable是高速查找的数据结构.本文中的HashTable使用链表处理数组. 该HashTable能够指定table的长度.提供了遍历的方法. 包含table的长度的选择 ...