leetcode第36题

简介: 一个 9 * 9 的数独的棋盘。判断已经写入数字的棋盘是不是合法。需要满足下边三点,• 每一行的数字不能重复• 每一列的数字不能重复• 9 个 3 * 3 的小棋盘中的数字也不能重复。只能是 1 - 9 中的数字,不需要考虑数独最后能不能填满

image.png

一个 9 * 9 的数独的棋盘。判断已经写入数字的棋盘是不是合法。需要满足下边三点,

  • 每一行的数字不能重复
  • 每一列的数字不能重复
  • 9 个 3 * 3 的小棋盘中的数字也不能重复。

只能是 1 - 9 中的数字,不需要考虑数独最后能不能填满。

解法一 暴力解法

需要满足三条,那就一条一条判断。

publicbooleanisValidSudoku(char[][] board) {
//判断每一行for (inti=0; i<9; i++) {
if (!isValidRows(board[i])) {
returnfalse;
        }
    }
//判断每一列for (inti=0; i<9; i++) {
if (!isValidCols(i, board)) {
returnfalse;
        }
    }
//判断每个小棋盘for (inti=0; i<9; i=i+3) {
for (intj=0; j<9; j=j+3) {
if (!isValidSmall(i, j, board)) {
returnfalse;
            }
        }
    }
returntrue;
}
publicbooleanisValidRows(char[] board) {
HashMap<Character, Integer>hashMap=newHashMap<>();
for (charc : board) {
if (c!='.') {
if (hashMap.getOrDefault(c, 0) !=0) {
returnfalse;
            } else {
hashMap.put(c, 1);
            }
        }
    }
returntrue;
}
publicbooleanisValidCols(intcol, char[][] board) {
HashMap<Character, Integer>hashMap=newHashMap<>();
for (inti=0; i<9; i++) {
charc=board[i][col];
if (c!='.') {
if (hashMap.getOrDefault(c, 0) !=0) {
returnfalse;
            } else {
hashMap.put(c, 1);
            }
        }
    }
returntrue;
}
publicbooleanisValidSmall(introw, intcol, char[][] board) {
HashMap<Character, Integer>hashMap=newHashMap<>();
for (inti=0; i<3; i++) {
for (intj=0; j<3; j++) {
charc=board[row+i][col+j];
if (c!='.') {
if (hashMap.getOrDefault(c, 0) !=0) {
returnfalse;
                } else {
hashMap.put(c, 1);
                }
            }
        }
    }
returntrue;
}

时间复杂度:整个棋盘访问了三次,如果棋盘大小是 n,那么就是 3n。也就是 O(n)。

空间复杂度:O(1)。

第一种解法的作者太太聪明了!自己规定格式这种思想,很棒。

相关文章
|
7月前
|
人工智能 移动开发 搜索推荐
增强现实让广告“活”起来——AR 赋能营销的新玩法
增强现实让广告“活”起来——AR 赋能营销的新玩法
431 25
|
2月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.92 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.92 (macOS, Linux, Windows) - 开源渗透测试框架
269 2
Metasploit Framework 6.4.92 (macOS, Linux, Windows) - 开源渗透测试框架
|
9月前
|
人工智能 数据库管理 OLAP
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
2274 2
|
4月前
|
机器学习/深度学习 人工智能 安全
什么是医院不良事件管理系统?PDCA分析法在系统中具体如何应用?
医院不良事件管理系统是用于识别、分析和预防医疗过程中各类安全事件的工具,旨在提升患者安全、保障医疗质量。系统覆盖患者安全、用药、设备、护理等多个场景,结合PDCA循环推动持续改进,并通过自动化与智能分析提升效率。
347 0
|
8月前
|
人工智能 Cloud Native 安全
AI 网关代理 LLMs 最佳实践
云原生 AI 网关其实并不是一个新的独立的产品,而是属于云原生 API 网关产品内的一部分功能,基于 AI 的场景,设计了更贴合 AI 业务的 AI API 及各个功能。同时也具备云原生 API 网关本身提供的各个通用能力。
429 15
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
456 1
|
存储 Kubernetes Linux
Kubernetes 的配置资源 ConfigMap(01部分)
Kubernetes 的配置资源 ConfigMap(01部分)
|
Java Maven
idea导入maven项目结构不全
idea导入maven项目结构不全
705 6
|
安全 搜索推荐 数据安全/隐私保护
战斧指纹浏览器与IPXProxy海外代理IP的协同使用策略
战斧指纹浏览器是一家专注跨境用户的指纹浏览器,支持IP隔离技术,能够解决账号关联的问题。当然,用户在使用战斧浏览器的时候也可以搭配自有设备,其中IPXProxy的海外代理IP是不错的选择。那战斧指纹浏览器与IPXProxy海外代理IP如何搭配使用?
534 2
|
Java 数据安全/隐私保护 Apache