[Leetcode] valid sudoku 有效数独
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character'.'.

A partially filled sudoku which is valid.
题意:判断矩阵是否是一个数独矩阵。所谓的数独矩阵就是9*9的矩阵,每一行一个元素只出现一次、每一列一个元素只出现一次,并且在任意一个小矩阵(3×3)中一个元素只出现一次(所说的元素指0-9这九个数字)。a)第i个九宫格的第j个格点的行号可表示为i/3*3+j/3;b)第i个九宫格的第j个格点的列号可表示为i%3*3+j%3(详见陆草纯的博客)。整体的思路是:开辟三个二维标志数组,m[i][j]表示当前的这个位置,是否被访问过。
代码一陆草纯的博客,代码如下:
class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
for(int i = ; i < ; i ++)
{
unordered_map<char, bool> m1; //check i_th row
unordered_map<char, bool> m2; //check i_th column
unordered_map<char, bool> m3; //check i_th subgrid
for(int j = ; j < ; j ++)
{
if(board[i][j] != '.')
{
if(m1[board[i][j]] == true)
return false;
m1[board[i][j]] = true;
}
if(board[j][i] != '.')
{
if(m2[board[j][i]] == true)
return false;
m2[board[j][i]] = true;
}
if(board[i/*+j/][i%*+j%] != '.')
{
if(m3[board[i/*+j/][i%*+j%]] == true)
return false;
m3[board[i/*+j/][i%*+j%]] = true;
}
}
}
return true;
}
};
因为只要考虑出现的数字是否有重复的,所以,只需用当前元素的值转化为坐标信息,访问就行。Grandyang代码二:
class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board)
{
int row=board.size(),col=board[].size();
if(row !=||col !=) return false;
vector<vector<bool>> rowFlag(row,vector<bool>(col,false));
vector<vector<bool>> colFlag(row,vector<bool>(col,false));
vector<vector<bool>> cellFlag(row,vector<bool>(col,false));
for(int i=;i<row;++i)
{
for(int j=;j<col;++j)
{
if(board[i][j]>=''&&board[i][j]<='')
{
int c=board[i][j]-'';
if(rowFlag[i][c]||colFlag[c][j]||cellFlag[*(i/)+j/][c])
return false;
rowFlag[i][c]=true;
colFlag[c][j]=true;
cellFlag[*(i/)+j/][c]=true;
}
}
}
return true;
}
};
想把代码一按照代码二那样写,总是通不过,抽时间再看看问题出在哪。
[Leetcode] valid sudoku 有效数独的更多相关文章
- [LeetCode] Valid Sudoku 验证数独
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- LeetCode:36. Valid Sudoku,数独是否有效
LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku bo ...
- LeetCode——Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- Leetcode Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- LeetCode: Valid Sudoku 解题报告
Valid SudokuDetermine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa ...
- [LeetCode] 36. Valid Sudoku 验证数独
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
- [leetcode]36. Valid Sudoku验证数独
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
- lintcode:Valid Sudoku 判断数独是否合法
题目: 判断数独是否合法 请判定一个数独是否有效.该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 样例 下列就是一个合法数独的样例. 注意 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...
随机推荐
- 两个有序数组合并成一个有序数组(要求时间复杂度为O(n))
面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组. ...
- mysql c 获取error_code
#include <stdio.h> #include <mysql.h> int main(int argc, char **argv) { MYSQL *con = mys ...
- spring + mybatis 注解 @Transactional失效
1.问题 在使用@Transactional注解管理事务的时候会出现很多错误,比如: *** was not registered for synchronization because synchr ...
- Unity Lighting - Choosing a Lighting Technique 选择照明技术(一)
Choosing a Lighting Technique 选择照明技术 https://unity3d.com/cn/learn/tutorials/topics/graphics/choosi ...
- leetcode-反转链表
转载至:https://blog.csdn.net/fx677588/article/details/72357389 反转一个单链表. 示例: 输入: 1->2->3->4 ...
- 389. Valid Sudoku【LintCode java】
Description Determine whether a Sudoku is valid. The Sudoku board could be partially filled, where e ...
- Memcache的客户端连接系列(四) PHP
关键词: Memcached PHP 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. PHP客户端 Re ...
- springMVC怎么改变form的提交方式为put或者delete
想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...
- [leetcode-738-Monotone Increasing Digits]
Given a non-negative integer N, find the largest number that is less than or equal to N with monoton ...
- 20172333 2017-2018-2 《Java程序设计》第10周学习总结
20172333 2017-2018-2 <Java程序设计>第10周学习总结 教材学习内容 第十三章 集合是一个对象,一个保存其他对象的数据库. 集合可以保存不同种类的对象也可以保存同种 ...