LeetCode 36. 有效的数独(Valid Sudoku)
题目描述
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字
1-9在每一行只能出现一次。 - 数字
1-9在每一列只能出现一次。 - 数字
1-9在每一个以粗实线分隔的3x3宫内只能出现一次。
![]()
上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用 '.' 表示。
示例 1:
输入:
[
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]
输出: true
示例 2:
输入:
[
["8","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]
输出: false
解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。
但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。
说明:
- 一个有效的数独(部分已被填充)不一定是可解的。
- 只需要根据以上规则,验证已经填入的数字是否有效即可。
- 给定数独序列只包含数字
1-9和字符'.'。 - 给定数独永远是
9x9形式的。
解题思路
对于一个9x9的数独,遍历表格时分成三部分分别判断:第i行、第i列以及第i个方框,每个部分分别判断第j个元素是否满足条件。所以分别构造三个map,遍历到不为‘.’的数字时首先判断当前部分map中是否存在此字符,若存在就返回true,否则置当前字符为true。注意对于每个部分遍历数独时要进行正确的行列转换。
代码
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for(int i = ; i < ; i++){
map<char, bool> row, col, grid;
for(int j = ; j < ; j++){
if(board[i][j] != '.'){
if(row[board[i][j]] == true)
return false;
row[board[i][j]] = true;
}
if(board[j][i] != '.'){
if(col[board[j][i]] == true)
return false;
col[board[j][i]] = true;
}
int r = i / * + j / ;
int c = i % * + j % ;
if(board[r][c] != '.'){
if(grid[board[r][c]] == true)
return false;
grid[board[r][c]] = true;
}
}
}
return true;
}
};
LeetCode 36. 有效的数独(Valid Sudoku)的更多相关文章
- 前端与算法 leetcode 36. 有效的数独
目录 # 前端与算法 leetcode 36. 有效的数独 题目描述 概要 提示 解析 算法 传入[['5', '3', '.', '.', '7', '.', '.', '.', '.'],['6' ...
- 【Leetcode】【Easy】Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- Java实现 LeetCode 36 有效的数独
36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在 ...
- leetcode 36 有效的数独 哈希表 unordered_set unordersd_map 保存状态 leetcode 37 解数独
leetcode 36 感觉就是遍历. 保存好状态,就是各行各列还有各分区divide的情况 用数组做. 空间小时间大 class Solution { public: bool isValidSud ...
- LeetCode之“散列表”:Valid Sudoku
题目链接 题目要求: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boar ...
- 【leetcode刷题笔记】Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- [leetcode] 36. 有效的数独(Java)
没啥好说的,直接上就行 36. 有效的数独 class Solution { public boolean isValidSudoku(char[][] board) { Map<Charact ...
- LeetCode第[36]题(Java):Valid Sudoku
题目:有效的数独表 难度:Medium 题目内容: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be ...
- [Swift]LeetCode36. 有效的数独 | Valid Sudoku
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
随机推荐
- webpack抽取CSS文件与CSSTreeShaking
webpack抽取CSS文件 CSSTreeShaking 一.webpack抽取CSS文件 抽取CSS文件的插件:mini-css-extract-plugin npm install --save ...
- px自动换算rem
//designWidth:设计稿的实际宽度值,需要根据实际设置//maxWidth:制作稿的最大宽度值,需要根据实际设置//这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最 ...
- JavaWeb【八、JSP指令与动作元素】
include指令(页面嵌套) <%@ include file="URL"%> include动作 <jsp:include page="URL&qu ...
- 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
有些Win10系统的用户反映电脑在开机的时候突然变成黑屏,还出现提示0xc0000225的错误代码,不知道该怎么去解决.一般来说,遇到这种情况一般是系统的注册表出现了问题.下面就为大家分享一下相应的解 ...
- deep_learning_CNN
AI学习笔记——卷积神经网络(CNN) image.png 上篇文章简单地地介绍了神经网络和深度学习,在神经网络中,每一层的每个神经元都与下一层的每个神经元相连(如下图), 这种连接关系叫全连接(Fu ...
- three.js之创建坐标系网格
<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>My first thr ...
- nagios-调用脚本
在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios ...
- checkbox 和 selected 混淆
1.option里面的selected属性,如果我们在下拉列表里面选择了一个option那么他的selected="true" ,如果我们想设置当前的option是选中 状态的, ...
- mysql-mmm实现高可用和部署时须要考虑的问题
mysql-mmm简介 Multi-Master Replication Manager for MySQL,简称mmm,官方的介绍可以参考mmm官网.好处自然不用说,读写分离,官方称读能做到负载均衡 ...
- Rails 用Webpack安装Bootstrap(附录webpack使用)
Rails6将默认使用webpack代替asset: 本文讲述如何自己配置. 参考: https://getbootstrap.com/docs/4.1/getting-started/webpack ...