题目

请判定一个数独是否有效。

该数独可能只填充了部分数字,其中缺少的数字用 .表示。

注意事项

一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。

样例

shudu.PNG

上面就是一个合法数独的样例

分析

初看上去题目似乎很复杂,其实不然。本题就是判断数组行列不能有重复元素,以及小九宫格不能有重复元素的算法。

首先,分别判断行,列,最后判断九宫格。

代码

class Solution {

/**

* @param board: the board

@return: wether the Sudoku is valid

*/

public boolean isValidSudoku(char[][] board) {

boolean[] visited = new boolean[9];

// row

for(int i = 0; i<9; i++){

Arrays.fill(visited, false);

for(int j = 0; j<9; j++){

if(!process(visited, board[i][j]))

return false;

}

}

//col

for(int i = 0; i<9; i++){

Arrays.fill(visited, false);

for(int j = 0; j<9; j++){

if(!process(visited, board[j][i]))

return false;

}

}

// sub matrix

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(!process(visited, board[i + k/3][ j + k%3]))

return false;

}

}

}

return true;

}

private boolean process(boolean[] visited, char digit){

if(digit == '.'){

return true;

}

int num = digit - '0';

if ( num < 1 || num > 9 || visited[num-1]){

return false;

}

visited[num-1] = true;

return true;

}

};

C语言检测数独是否合法,LintCode 判断数独是否合法相关推荐

  1. iOS开发判断手机号是否合法

    #pragma mark----- 判断手机号是否合法 /*!  @brief 判断手机号是否合法  */ + (NSString *)PhoneNumberMobile:(NSString *)mo ...

  2. C语言检测数独是否合法,判断数独是否合法

    请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填充的空格有效即可. 您在真实的面试中是否遇到过这 ...

  3. c语言判断一个数独是否合法,判断数独是否合法

    题目: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 样例: The following partially filed sudoku is valid. 思路: ...

  4. 在c语言中合法标识符的第一个字符必须是,c语言合法标识符判断规则是什么?...

    规则是:1.标识符的第一个字符必须是字母(a~z或A~Z)或下划线(_):2.后面跟的字符是由任意字母.下划线(_).数字组成:3.标识符中的大小写字母是有区别的,代表不同含义:4.标识符不能是关键字 ...

  5. python实现多语言语种识别_用Python进行语言检测

    最近正好碰到这个需求,总结一下用Python进行语言检测的方法. 1.用unicode编码检测 汉字.韩文.日文等都有对应的unicode字符集范围,只要用正则表达式匹配出来即可. 在判断的时候,往往 ...

  6. 正则表达式在JS中的应用,判断邮箱是否合法

    目录 一.什么是正则表达式: 二.正则表达式基本符号: 三.简单的正则表达式: 四.创建正则表达式,调用方法: 五.例子:判断邮箱是否合法 一.什么是正则表达式: 正则表达式主要用在字符串格式匹配方面 ...

  7. 04.微博消息的语言检测

    04.微博消息的语言检测 郑昀 201010 隶属于<02.数据解析>小节 大意是,封装Google语言检测ajax web service的接口,输入一段话,输出语言种类.这个方法是从R ...

  8. R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换

    R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...

  9. R语言all函数、any函数判断逻辑向量(logical vector)实战

    R语言all函数.any函数判断逻辑向量(logical vector)实战 目录 R语言all函数.any函数判断逻辑向量(logical vector)实战 #基本语法

最新文章

  1. 转移操作主机角色至Windows Server 2012 R2
  2. RabbitMQ 入门
  3. 和ts一般怎么玩_KPL:一诺采访引热议,quot;裴擒虎是个野王都会quot;,暖阳怎么办?...
  4. 初学c++基础知识——第一个c++程序
  5. 解决php写入mysql乱码问题汇总
  6. sqlite中的命令
  7. python 的几个内置函数(lambda ,zip, filter, map, reduce )用法
  8. 判断一个Checkbox是否被选中
  9. ubuntu自定义安装里怎么选_中央空调到底应该怎么选?小户型也能安装中央空调?行家说实话了...
  10. java抢单功能_基于消息队列的高并发抢单功能实现方法与流程
  11. csredis封装_在.NET Core中使用CSRedis
  12. no properties discovered to create BeanSerializer 问题解决
  13. 2022-7 一套鼠标键盘控制两台及以上电脑
  14. 数码相机SD卡无法读取怎么办?照片怎么恢复
  15. 马斯克群发卫星造天文奇观,未来三天全国多地可见
  16. 面试常见问题之网络基础
  17. openwrt procd启动流程和脚本分析
  18. 2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)--转载
  19. 设置coursera DNS
  20. 【HDOJ】4210 Su-domino-ku

热门文章

  1. ajax 导致 css 延迟_腾讯START云游戏《英雄联盟》的Mac 轻体验:延迟较高时会卡顿 - 游戏 - IT商业网...
  2. 集合例题1:已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs = {“12345“,“67891“,“12347809933“,“98765432102“,“678
  3. 右下角弹窗广告彻底关闭
  4. 解压tar.gz是tar -zxvf不是tar -xjf,后者对应的是tar.bz2
  5. U3DSPACESHOOT个人重制版。代码分享(五)其他代码部分
  6. thinkPHP6.0入门笔记(四)——删除和修改用户信息
  7. 萧毅舟;3.1今日黄金走势分析,反弹空,黄金白银操作建议
  8. C++函数形参为指针和指针引用的区别
  9. menu什么意思中文意思_menu是什么意思_menu的翻译_音标_读音_用法_例句_爱词霸在线词典...
  10. phoenix是什么?