当前位置:网站首页>【LeetCode】36、有效的数独
【LeetCode】36、有效的数独
2022-07-29 21:26:00 【小曲同学呀】
36、有效的数独
题目:
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
- 数字 1-9 在每一行只能出现一次。
- 数字 1-9 在每一列只能出现一次。
- 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
.
注意:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
空白格用 '.' 表示。
示例1:

输入:board =
[["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:
输入:board =
[["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 存在, 因此这个数独是无效的。
提示:
board.length == 9
board[i].length == 9
board[i][j] 是一位数字(1-9)或者 ‘.’
解题思路:
乍一看此题,完全没有思路,默默的打开了讨论区,看着大家的天才解法,不由的陷入了一阵深思…
先说一下暴力解法:
- 先对整个board进行一次遍历,查找是否在每一行以及每一列有相同的元素
- 再对每个box进行遍历,使用Set来查找每个box中是否有相同的元素
- 如果不能添加说明有重复元素
参考代码:
public boolean isValidSudoku(char[][] board) {
for (int i = 0; i < 9; i++){
for (int j = 0; j < 9; j++){
if (board[i][j]!= '.'){
//判断这一行中是否有相同元素
for (int k = j+1; k < 9; k ++){
if (board[i][j] == board[i][k] ){
return false;
}
}
//判断这一列中是否有相同元素
for (int k = i+1; k<9; k++){
if (board[i][j] == board[k][j]){
return false;
}
}
}
}
}
//判断每个一box中是否有相同元素
for (int i = 0; i < 9; i=i+3){
for (int j = 0; j < 9; j = j+3){
Set<Character> set = new HashSet<>();
for (int k = 0; k <3; k++){
for (int l = 0; l < 3; l++){
if (board[i + k][j + l]!= '.' && !set.add(board[i + k][j + l])){
return false;
}
}
}
}
}
return true;
}
}

边栏推荐
- 三品牌下半年将带来多款新品,东风日产将迎来“产品大潮”
- bright day
- 网络通信编程基础,BIO,NIO
- Use the PostgreSQL GRANT command to modify permissions on various database objects
- 容器网络硬核技术内幕 (小结-中)
- 大陆泽、宁晋泊蓄滞洪区防洪工程与安全建设项目启动实施
- 针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
- 关于 golang 错误处理的一些优化想法
- Liu Genghong, boys and girls, come here!Sports data analysis and mining!(with a full set of code and data sets)
- 分布式之基石: 可靠性——What a tangled web we weave
猜你喜欢

install mysql using script

《张卫国的夏天》欢乐来袭,黄磊、刘奕君携手演绎“冤种”兄弟
![[BUG]一个数组new的时候sizeof()忘乘上个数](/img/d7/fa821aee0626e715bbb4e422e7e2fb.png)
[BUG]一个数组new的时候sizeof()忘乘上个数

南华早报 | 助力亚洲最具公信力报章实现AD域自动化管理

bright day

Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?

940. Different subsequences II

全系都更换带T四缸,安全、舒适一个不落

华为畅享50 Pro评测:HarmonyOS加持 更流畅更安全

C. Color the Picture(贪心/构造)
随机推荐
Second Best PyTorch Beginner Course; Thesis Writing Guide; Using µGo to Develop a Mini Compiler; Super Efficient Use of Transformer's Extension Library; Frontier Papers | ShowMeAI News Daily
Leetcode 705.设计哈希集合
IDEA 快捷键
网安学习-内网渗透2
数组和List互转
GET_ENTITYSET Method Implementation Guide for SAP ABAP OData Service Data Provider Class
什么是数据安全性?
Use the PostgreSQL GRANT command to modify permissions on various database objects
【Verilog 设计】Verilog 实现偶数、奇数分频和任意小数分频
iNFTnews | 福布斯的Web3探索
An article to understand service governance in distributed development
华为畅享50 Pro评测:HarmonyOS加持 更流畅更安全
The implementation of the flood control project and safety construction project in the flood storage and detention areas in Luluze and Ningjinbo was launched
给pdf添加已作废标识
容器网络硬核技术内幕 (小结-下)
Bug fix: Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]
940. Different subsequences II
全系都更换带T四缸,安全、舒适一个不落
相亲信息
linux install redis using script