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 官方题解。