LeetCode---Valid Sudoku解题分析

原创 2016年05月30日 21:40:08

题意描述:判断矩阵是否是一个数独矩阵。所谓的数独矩阵就是9*9的矩阵,每一行一个元素只出现一次、每一列一个元素只出现一次,并且在任意一个小矩阵中一个元素只出现一次(所说的元素指0-9这九个数字)

矩阵如下图所示:


解题分析:解题思路:注意题目中说的是只要当前已经填充的数字是合法的就可以,不一定要这个数独是有解的。依次判断已给定的矩阵每一行、每一列、以及每个小矩阵上是否是有重复数字即可;

public boolean isValid(boolean[] visited, char ch){//判断当前位置是否为'.',或是否被访问过
	if(ch == '.')//如果当前位置为'.'则返回true
		return true;
	
	int num = ch - '0';
	if(num < 1 || num > 9 || visited[num-1])//如果当前位置访问过则返回false
		return false;
	
	visited[num-1] = true;//将标记数字标记为true,表示该数字已访问过
	return true;
}
public boolean isValidSudoku(char[][] board){		
	boolean[] visited = new boolean[9];
	//判断每一行是否有重复数字
	for(int i=0; i<9; i++){
		Arrays.fill(visited, false);
		for(int j=0; j<9; j++){
			if(!isValid(visited, board[i][j]))
				return false;
		}
	}
	//判断每一列是否有重复数字
	for(int i=0; i<9; i++){
		Arrays.fill(visited, false);
		for(int j=0; j<9; j++){
			if(!isValid(visited, board[j][i]))
				return false;
		}
	}
	//判断每个子矩阵是否有重复数字
	for(int i=0; i<9; i+=3){
		for(int j=0; j<9; j+=3){
			Arrays.fill(visited, false);
			for(int k=0; k<9; k++){
				if(!isValid(visited, board[i+k/3][j+k%3]))
					return false;
			}
		}
	}
	
	return true;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Valid Sudoku -- LeetCode

原题链接: http://oj.leetcode.com/problems/valid-sudoku/  这道题是Sudoku Solver的一个子问题,在解数独的时候我们需要验证当前数盘是否合法。...

Valid Sudoku (Java)

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be...

LeetCode(36)Valid Sudoku

题目Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.The Sudoku board could be...
  • fly_yr
  • fly_yr
  • 2015年08月25日 20:40
  • 2013

leetcode 36: Valid Sudoku

Total Accepted: 24574 Total Submissions: 90344 Determine if a Sudoku is valid, accordi...
  • xudli
  • xudli
  • 2015年01月29日 12:59
  • 2244

Leetcode_36_Valid Sudoku

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42497857 Determine if a Su...

LeetCode Valid Sudoku

判断一个给出的数独模型是否符合要求。

leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题

三星机试也考了类似的题目,只不过是要针对给出的数独修改其中三个错误数字,总过10个测试用例只过了3个与世界500强无缘了 36. Valid Sudoku Determine if a Su...

Valid Sudoku

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

Valid Sudoku Leetcode Python

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

LeetCode 36 Valid Sudoku (C,C++,Java,Python)

Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode---Valid Sudoku解题分析
举报原因:
原因补充:

(最多只允许输入30个字)