力扣每日一题Day32
生命短暂,而你可以决定让它活出灿烂。
题目描述:
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
- 数字
1-9在每一行只能出现一次。 - 数字
1-9在每一列只能出现一次。 - 数字
1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)
解题代码:
1 | class Solution { |

解读与收获:
简单的暴力算法,设置三个9*9的数组分别记录下每行每列每块(9x9)中,数字是否出现过,然后从头遍历该二维数组,经过int num = boardij - ‘1’,将char转int,分别判断:
if(row[i][num]) return false; //条件1 if(col[j][num]) return false; //条件2 if(box[i/3*3+j/3][num]) return false; //条件3
其实刷了一些日子的题,我发现自己的思想发生了改变。看到题的第一眼,我总是会下意识否认掉那些“暴力解法”,因为我认为它们太简单,占用资源太多了,如果提交上去很容易出现超时之类的。但是很难否认,看起来困难的题,他的最优解法往往就是暴力算法,直来直去。如果一个题,暴力算法都没有思路的话,那就没资格去思考更优的方法,我之后会先思考每一题的暴力算法,然后进行优化,这是我最近醒悟到的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 驴の奇思妙想!
评论




