[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 ... 
随机推荐
- SQL集合运算 差集 并集 交
			SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION:交集INTERSECT:差集EXCEPT(在Oracle中叫做 MINUS).在有些数据库中对此的支持不够充分,如MySql中只 ... 
- Js常用技巧
			摘录:http://crasywind.blog.163.com/blog/static/7820316920091011643149/ js 常用技巧 1. on contextmenu=" ... 
- springmvc+mongodb+maven 项目测试代码
			你看我有一篇文章配置,或许还会有.mongodb性能测试结果.一个"快"字 源代码包,请留下邮箱 代码结构图 watermark/2/text/aHR0cDovL2Jsb2cuY3 ... 
- laydate天蓝色的皮肤
			要使用该网站日期控件.就到网上找laydate,但laydate无天蓝色的肌肤,其他皮肤不能进行集成和现场,对自己做了一个天蓝色的肌肤,分享给大家使用. 皮肤下载 版权声明:本文博主原创文章.博客,未 ... 
- Search Bars(一个)
			A search bar provides an interface for text-based searches with a text box and buttons such as searc ... 
- Shuttle ESB(四)——宣布订阅模式实例介绍(1)
			前,我的重点是关注的三篇文章Shuttle ESB入境和宏观的概念范例. Shuttle ESB模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分,请看以下文章的介绍:Shuttle E ... 
- 懵懵懂懂初识J2EE
			一.定义 Java2平台包含:标准版.企业版.微缩版.当中J2SE是Java2的标准版,主要用 于桌面应用软件的编程:J2ME是微缩版,主要应用于嵌入式系统开发:还有这次学习的J2EE是Java2的企 ... 
- HSV  量化
			function L=hsvquan(hsv) %对HSV量化,该3维特征矢量: h=hsv(:,:,1); s=hsv(:,:,2); v=hsv(:,:,3); % 假设对HSV 空间进行适当的量 ... 
- 数据库管理——安全管理——识别SQLServer中空密码或者弱密码的登录名
			原文:数据库管理--安全管理--识别SQLServer中空密码或者弱密码的登录名 原文译自: http://www.mssqltips.com/sqlservertip/2775/identify-b ... 
- RH253读书笔记(3)-Lab 3 Securing Networking
			Lab 3 Securing Networking Goal: To build skills with the Netfilter packet filter Sequence 1: Applyin ... 
