当前位置: 首页 > news >正文

力扣面试150题--有效的数独

Day 19

题目描述

在这里插入图片描述

思路

其实还挺简单的,主要的难点在于如何判断每个小数独是否满足要求
详细见代码

class Solution {
    public boolean isValidSudoku(char[][] board) {
        HashSet<Character> set= new HashSet<>();//处理行
        HashSet<Character> set1= new HashSet<>();//处理左边第一个小数独
        HashSet<Character> set2= new HashSet<>();//处理左边第二个小数独
        HashSet<Character> set3= new HashSet<>();//处理左边第三个小数独
        HashSet<Character> set4= new HashSet<>();//处理列
        for(int i=0;i<9;i++){//行
            set.clear();//每次换行,清空set
            if(i==0||i==3||i==6){
            //由于小数独不好处理,可以发现0 3 6分别为三行小数独的起始行
                    set1.clear();
                    set2.clear();
                    set3.clear();
                }
            set4.clear();//列set清空
            for(int j=0;j<9;j++){
                if(board[i][j]!='.'){
                    if(set.contains(board[i][j])){//行如果存在重复
                        return false;
                    }
                    else{//行不存在重复,加入set
                        set.add(board[i][j]);
                    }
                    if(j<3){//第一个数独
                        if(set1.contains(board[i][j])){
                            return false;
                        }
                        set1.add(board[i][j]);
                    }
                    if(3<=j&&j<6){//第二个数独
                        if(set2.contains(board[i][j])){
                            return false;
                        }
                        set2.add(board[i][j]);
                    }
                    if(6<=j){//第三个数独
                        if(set3.contains(board[i][j])){
                            return false;
                        }
                        set3.add(board[i][j]);
                    }
                    }
                if(board[j][i]!='.'){//列
                     if(set4.contains(board[j][i])){
                            return false;
                        }
                        set4.add(board[j][i]);
                }    
                }
            }
        return true;
    }
}

相关文章:

  • 【Android】Android 打包 Release 崩溃问题全解析:Lint 错误、混淆类丢失及解决方法大全
  • React 条件渲染
  • Agent2Agent协议学习资源大全:从理论到实践
  • 【Linux】单例模式及其在线程池中的应用
  • Spring Boot 集成 POI
  • 【Deepseek基础篇】--v3基本架构
  • 【SLAM】将realsense-viewer录制的rosbag视频导出成图片序列(RealSense D435)
  • 二分算法的入门笔记
  • Linuix基础11
  • Python:开启自动化办公与游戏开发的无限可能
  • mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回
  • JAVA EE_多线程-初阶(三)
  • 驱动开发硬核特训 · Day 6 : 深入解析设备模型的数据流与匹配机制 —— 以 i.MX8M 与树莓派为例的实战对比
  • 第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 部分题解
  • 辛格迪客户案例 | 西藏奇正藏药MES项目
  • 【Docker基础】深入解析 Docker 存储卷:管理、绑定与实战应用
  • 安宝特新闻丨Vuzix Core™波导助力AR,视角可调、高效传输,优化开发流程
  • echarts地图添加涟漪波纹点位
  • PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼
  • 多模态学习分析(MLA)驱动高中差异化教学策略研究
  • 给公司建网站/免费建站系统哪个好用吗
  • 高明做网站/爱战网关键词
  • 软件工程大学排名/宁波seo公司排名
  • css3网站模板/产品线上推广方案
  • 电脑做网站服务器需要什么软件/百度关键词搜索排名帝搜软件
  • 北沙滩网站建设/重庆关键词优化服务