您的位置:首页 > 其它

valid-sudoku判断是否是有效数独

2016-06-01 21:25 477 查看

题目描述

题意:判断一个9*9的矩阵的每一行,每一列,每一个小九宫格是否没有重复的数字,数字范围为“1-9”.



A partially filled sudoku which is valid.
import java.util.*;
public class Solution {
public boolean isValidSudoku(char[][] board) {
//行,列,每一个九宫格都没有重复的数字就是符合要求
//数独:每一行,每一列,每一个九宫格的数字都为“1-9”
boolean[] flag=new boolean[10];
//1.先逐行判断
for(int i=0;i<9;i++)
{
Arrays.fill(flag,false);
for(int j=0;j<9;j++)
{
if(is_valid(flag,board[i][j]) == false)
{
return false;
}
}
}
//2.再逐列判断
for(int j=0;j<9;j++)
{
Arrays.fill(flag,false);
for(int i=0;i<9;i++)
{
if(is_valid(flag,board[i][j]) == false)
{
return false;
}
}
}
//再逐个九宫格判断
for(int i=0;i<9;i+=3)
{
for(int j=0;j<9;j+=3)
{
Arrays.fill(flag,false);
for(int m=i;m<i+3;m++)
{
for(int n=j;n<j+3;n++)
{
if(is_valid(flag,board[m]
) == false)
return false;
}
}
}
}
return true;
}
public boolean is_valid(boolean[] flag,char ch)
{
if(ch == '.')
{
return true;
}
else if(flag[ch-'0'] == true)
{
return false;
}
else
{
flag[ch-'0']=true;
return true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: