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;
}
}
}
相关文章推荐
- Poj2749 Building Roads
- 23种设计模式(14):解释器模式
- 鸟哥Java学习之集合框架--常用对象API
- C++实现堆
- Android5.1中surface和CpuConsumer下生产者和消费者间的处理框架简述
- 最小生成树_Prim
- java中字符串与字符数组之间的转换
- 天池_阿里音乐流行趋势预测大赛(1) —— 赛题分析
- 一直忍让。。脾气激情岂不是受委屈了
- 编译原理之后缀表达式生成与计算
- 设计模式23篇:解释器模式
- 深度学习系列文章之四:ubantu系统下MATLAB安装
- 乌龟棋_CODEVS1068_DP
- [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
- 差分约束系统详解(转)
- AndroidManifest配置之uses-feature
- 认证与授权
- 24点
- iOS中从加载的xib中得到的控件为空的问题
- 冒泡排序算法的两种优化