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;
    }
}

 

全部评论

相关推荐

点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务