LeetCode 有效数独 JAVA

思路很简单:   分别判断 行 列 box  是否有重复的数字,如果有重复的,返回 false 。

单独拿一行来看。

1. 设置一个 HashMap<value, count>

2. put( value,  getOrDefault(value,0) + 1 )。 这里不用 get ( value ), 因为 java 中的 get 是通过 equals 实现的,泛型编程需要重写 equals 函数,才能正常使用 get 。 而 getOrDefault(value, 0) 容器中有 value 这个值,那返回值就是这个值,否则就返回 0 。

3. 如果 get(value) 大于 1, 那么则返回 false 。

一个数独有 9 行, 定义 row [9] 即可。 对于列 和 box 也是相同的处理方法。

box 的 index =  ( i / 3 ) * 3 + j / 3 ;  

解题方法借鉴于 Leetcode 官方题解。

猜你喜欢

转载自www.cnblogs.com/stul/p/11746932.html