美文网首页
leetcode36M有效的数独

leetcode36M有效的数独

作者: 愤怒的灰机 | 来源:发表于2018-09-24 21:32 被阅读0次
    题目

    思路一:分别用三个容器来保存已有的数据,三个容器的容量都是9,分别代表第0-8行,0-8列,以及第0-8个块,在添加的时候判断数字是否已经在容器中,如果在则返回false。

    总结:很简单的一道题,但是因为粗心没有在31行判断是否为空所以检查了半天。可借鉴的点:(1)把init()方法和add()方法与主方法松耦合,方便修改;(2)利用hashSet容器判断是否存在是比较高效的。

    代码如下:

    思路一代码

    思路二:遍历三遍,第一遍判断每个行是否重复,第二遍判断每个列是否重复,第三遍判断每个块是否重复

    分析:思路二的优点是占用的空间更少,但是遍历的次数更多,不过实际运行中思路二的时间会更少。

    部分代码实例(判断行):

    for (char[] chs : board) {

        Set<Character> set = new HashSet<Character>();

        int count = 0;

        for (char ch : chs) {

            if (ch == '.') {

                count++;

                continue;

            }

            set.add(ch);

            }

        if (set.size() != (9 - count))

        return false;

    }

    相关文章

      网友评论

          本文标题:leetcode36M有效的数独

          本文链接:https://www.haomeiwen.com/subject/fsktnftx.html