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)。

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

目录
打赏
0
0
0
0
10
分享
相关文章
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
Qwen3 + AnalyticDB+Dify on DMS 私有部署指导⽂档
1482 2
基于方块编码的图像压缩matlab仿真,带GUI界面
本项目展示了基于方块编码的图像压缩算法,包括算法运行效果、软件环境(Matlab 2022a)、核心程序及理论概述。算法通过将图像划分为固定大小的方块并进行量化、编码,实现高效压缩,适用于存储和传输大体积图像数据。
|
12月前
|
idea导入maven项目结构不全
idea导入maven项目结构不全
366 6
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
285 0
|
11月前
点击全选,使所有复选框被选中
点击全选,使所有复选框被选中
96 0
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
91 1
uniapp跨域问题解决办法
uniapp跨域问题解决办法
550 0
《2020高德技术年刊》电子版地址
在2021年春节即将到来之际,我们精选了几十篇高德技术的干货文章及数篇国际顶会论文,制作成了一本厚达750页+的电子书,作为新年礼物赠送给大家。
117 0
《2020高德技术年刊》电子版地址
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问