leetcode 36. 有效的数独 Valid Sudoku【使用集合】

把每个数字按照其查看规则分别编码成三个字符串。设第i行第j列的数字为n,编码如下:

  • 按照行规则: i(n)   
  • 按照列规则:(n)j
  • 按照3x3的规则:i/3(n)j/3

例如第1行第4列的9被分别编码为"1(9)"、"(9)4"、"0(9)1"(因为它在第(0,1)个3x3的块中)

这样的话就可以把每个数字的所有三个编码都放进同一个hashset中进行去重,而互相不影响,就不需要为三种规则建立三个hashset了。  当某数字的编码串已经在set中,说明违反了数独规则。

 

java

class Solution {
    public boolean isValidSudoku(char[][] board) {
        Set<String> myset = new HashSet<>();
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                char c = board[i][j];
                if(c!='.')
                {
                    String s = "(" + c + ")";
                    if(!myset.add(i+s) || !myset.add(s+j) || !myset.add(i/3+s+j/3))
                        return false;
                }
            }
        }
        return true;
    }
}

 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
4471次浏览 48人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16917次浏览 137人参与
# 米连集团26产品管培生项目 #
7383次浏览 226人参与
# 沪漂/北漂你觉得哪个更苦? #
1616次浏览 41人参与
# 你的实习产出是真实的还是包装的? #
3230次浏览 54人参与
# 春招至今,你的战绩如何? #
16021次浏览 146人参与
# 巨人网络春招 #
11540次浏览 228人参与
# HR最不可信的一句话是__ #
1107次浏览 32人参与
# AI面会问哪些问题? #
971次浏览 24人参与
# 你做过最难的笔试是哪家公司 #
1306次浏览 23人参与
# AI时代,哪个岗位还有“活路” #
2930次浏览 53人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152945次浏览 889人参与
# 简历第一个项目做什么 #
32180次浏览 363人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8029次浏览 43人参与
# XX请雇我工作 #
51164次浏览 171人参与
# 简历中的项目经历要怎么写? #
311119次浏览 4271人参与
# 投格力的你,拿到offer了吗? #
178382次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77008次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
64819次浏览 891人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187635次浏览 1123人参与
# 你怎么看待AI面试 #
180882次浏览 1318人参与
# 正在春招的你,也参与了去年秋招吗? #
364407次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务