博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Valid Sudoku leetcode
阅读量:6848 次
发布时间:2019-06-26

本文共 1938 字,大约阅读时间需要 6 分钟。

Determine if a Sudoku is valid, according to: .

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

A partially filled sudoku which is valid.

判断九宫格的合理性(并不一定有解),只需要依次判断行、列、9个子九宫格是否合理即可!

我的思维非常常规,代码效率比较慢,如下:

 

1 class Solution { 2 public: 3     bool isValidSudoku(vector
>& board) { 4 map
mark; 5 for(int i=0;i<9;i++) 6 { 7 mark.clear(); 8 for(int j=0;j<9;j++)//行是否合理 9 {10 mark[board[i][j]]++;11 if(board[i][j]!='.'&&mark[board[i][j]]>1)12 return false;13 }14 mark.clear();15 for(int j=0;j<9;j++)//列是否合理16 {17 mark[board[j][i]]++;18 if(board[j][i]!='.'&&mark[board[j][i]]>1)19 return false;20 }21 }22 for(int i=0;i<3;i++)//检查9个子九宫格,控制行.每次3行(或者3列),我选择行或者说从上往下共3排,一次一排23 {24 mark.clear();25 for(int j=3*i;j<3*i+3;j++)//第一列26 for(int k=0;k<3;k++)27 {28 mark[board[j][k]]++;29 if(board[j][k]!='.'&&mark[board[j][k]]>1)30 return false;31 }32 mark.clear();33 for(int j=3*i;j<3*i+3;j++)//第二列34 for(int k=3;k<6;k++)35 {36 mark[board[j][k]]++;37 if(board[j][k]!='.'&&mark[board[j][k]]>1)38 return false;39 } 40 mark.clear();41 for(int j=3*i;j<3*i+3;j++)//第三列42 for(int k=6;k<9;k++)43 {44 mark[board[j][k]]++;45 if(board[j][k]!='.'&&mark[board[j][k]]>1)46 return false;47 } 48 }49 return true;50 }51 };

 

转载于:https://www.cnblogs.com/chess/p/5080842.html

你可能感兴趣的文章
关于SqlHelper的功能用法理解
查看>>
关于_T、_TEXT、TEXT、_L 、L
查看>>
ruby 更换源 + sass 安装
查看>>
课堂练习——查找水王续
查看>>
在后台设置yii的配置文件
查看>>
(4/24) webpack3.x快速搭建本地服务和实现热更新
查看>>
Android弹窗中的spinner异常解决办法
查看>>
实验课2继续
查看>>
SVN使用主干分支的理解
查看>>
Docker学习笔记_初装的Centos无ifconfig
查看>>
jqgrid 自动换行
查看>>
网址探测器
查看>>
HDU 4282 A very hard mathematic problem [枚举]
查看>>
matlab max函数
查看>>
rails 单数 复数 大写 小写转换 下划线 驼峰命名
查看>>
mysql主从搭建和测试步骤
查看>>
基础概念总结(spring security、Quartz、JUnit测试)
查看>>
安装java的jdk与环境变量
查看>>
CGridCtrl只点击规定行中的按钮才弹出对话框
查看>>
Hadoop1.0.3集成eclipse开发
查看>>