Loading [MathJax]/jax/input/TeX/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据结构003:有效的数独

数据结构003:有效的数独

作者头像
艰默
发布于 2022-12-12 02:20:23
发布于 2022-12-12 02:20:23
43100
代码可运行
举报
文章被收录于专栏:iDoitnowiDoitnow
运行总次数:0
代码可运行

题目

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 空白格用 '.' 表示。

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:board = 
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:true

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:board = 
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:false
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。 但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

题解

通过上面的分析,我们的实现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public:
    bool isValidSudoku(vector<vector<char>>& board) {
        int row[9][9] = {0};
        int col[9][9] = {0};
        int box[3][3][9] = {0};

        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char c = board[i][j];
                if (c == '.') continue;
                int n = c - '1';
                row[i][n]++;
                col[j][n]++;
                box[i / 3][j / 3][n]++;
                if (row[i][n] > 1 || col[j][n] > 1 || box[i / 3][j / 3][n] > 1) {
                    return false;
                }
            }
        }
        return true;
    }
};

由于数独共有81个单元格,只需要对每个单元格遍历一次即可,因此其时间复杂度为O(1) 。由于数独的大小固定,因此空间的大小也是固定的,空间复杂度也为O(1)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iDoitnow 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!
简单来说就是,将多个项目或包文件放到一个git仓库来管理。 目前比较广泛应用的是yarn+lerna的方式实现monorepo的管理。 一个简单的monorepo的目录结构类似这样:
winty
2023/08/23
7.7K0
带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!
pnpm技术体系之:打造企业级 pnpm 开源组件
pnpm 是 performant npm(高性能的 npm),它是一款快速的,节省磁盘空间的包管理工具,同时,它也较好地支持了 workspace 和 monorepos,简化开发者在多包组件开发下的复杂度和开发流程。
南山种子外卖跑手
2023/01/12
2.2K0
pnpm技术体系之:打造企业级 pnpm 开源组件
基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Lerna管理多个package,并和其它工具整合,打造高效、完美的工作流,最终形成一个最佳实践
杨振涛
2019/08/06
3.1K0
基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
lerna最佳实践
在介绍我们今天的主角 lerna 之前,首先了解下什么是 multirepo ?什么是 monorepo ?
astonishqft
2022/05/10
2K0
lerna最佳实践
在 monorepo 中怎么组织和优化研发流程?
本文是基于Vite+AntDesignVue打造业务组件库[2]专栏第 10 篇文章【在 monorepo 中怎么组织和优化研发流程?】,前面几篇都在说函数库开发的相关内容,所以本文接着围绕这块说,主要是把研发流程梳理清楚,方便后续更多内容的铺开。
程序员白彬
2023/03/02
1.2K0
在 monorepo 中怎么组织和优化研发流程?
Monorepo——探秘源码管理新姿势!
导语 | Monorepo是一个“单仓多包”的代码管理策略,由于众多大型厂商和开源项目在其上的实践,Monorepo受到了越来越多的关注,和其他已有的代码库管理方案相比,有着自身独特的优势。本文仅讨论Monorepo在前端开发场景中的应用及实践,里面提到的概念和示例都会有所局限,可依据实际情况自行扩展阅读其他资料。 “代码(code)” 是程序员用开发工具所支持的语言写出来的源文件,用于实现或支持所有依托于计算机的程序及应用,因此,如何管理代码是开发人员在项目进程中非常重要的一环。 而“仓库(reposit
腾讯云开发者
2022/02/17
2.2K0
基于yarn1.x的monorepo实践分享
几天前,晓东船长微信问我,你们团队有没有monorepo的实践,我很遗憾的告诉他没有,但这在我心里播下了一颗探索的种子,刚好最近老总要搞内蒙古的新项目,我和另一个前端兄弟组成双枪敢死队进行保驾护航,于是我就开始探索,有没有一种可能,可以一个仓库管理多个项目,这里说的管理是指有条理有规范的管理,而不是说硬是把几个项目蹂躏到一起。
江涛学编程
2023/03/05
7000
突破项目瓶颈:2024 年 Monorepo 工具选择和实践
原文地址:https://juejin.cn/post/7342360674151858202
winty
2024/03/18
2.8K0
突破项目瓶颈:2024 年 Monorepo 工具选择和实践
让你的git message更加规范
规范比业务开发搬砖更为重要,没有一个好的编码规范,维护老的代码或者是编写新的代码都非常痛苦
w候人兮猗
2020/06/24
4060
Monorepo(单体仓库)与MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南
Monorepo——如同一棵枝繁叶茂的智慧之树,每个分支(项目或模块)紧紧依附于主干,共享着同一片沃土(基础配置)与养分供给(依赖库)👑
空白诗
2024/06/14
4950
Monorepo(单体仓库)与MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南
前端规范指南,让团队代码如出一辙!ESLint + Prettier + husky + lint-staged
假如团队中的小伙伴在提交代码时没有遵循规范要求,例如只写了一个"修改"或"更新,这会给团队中其他小伙伴造成困扰呢,不得不花时间查看代码和推测逻辑。
程序员王天
2023/10/18
2.9K0
前端规范指南,让团队代码如出一辙!ESLint + Prettier + husky + lint-staged
Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南
在软件开发中,代码仓库的管理方式对项目的效率和协作有着重要影响。常见的代码仓库管理方式主要有两种:Monorepo(单体仓库)和 MultiRepo(多仓库)。
空白诗
2024/07/09
1.2K0
Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南
巧用 gitHooks 提交前校验代码
在每一个使用 git 进行版本管理的仓库,都有一个目录 .git/hooks,包含 commit 各个阶段 Hooks 的脚本。这些 Hooks 在 git 操作 commit、push、merge 等得时候,可以做前置或者后置的操作,例如 pre-commit 在 git commit 前可以做代码校验,校验代码的时候使用的ESLint,格式化使用的是 prettier。Git 支持的常用钩子见下表,更多请查看官网Hooks:
刘小夕
2021/12/09
4.9K0
巧用 gitHooks 提交前校验代码
15分钟快速配置eslint,prettier,lint-staged,husky,commitizen实现前端项目代码规范化
当前,前端项目支持代码规范校验、代码格式化已经必不可少,同时需要支持代码提交前对代码格式校验预检查,这里提供一份最简单的配置供大家参考。
蓓蕾心晴
2022/05/09
4.8K2
15分钟快速配置eslint,prettier,lint-staged,husky,commitizen实现前端项目代码规范化
基于 Yarn WorkSpace + Lerna + OrangeCI 搭建 Typescript Monorepo 项目实践
Lerna 已然成为搭建 monorepo 工程的首选,然而官方文档[1]并没有给出构建 monorepo 项目最后一公里的解决方案。而在这次在迁移搭建全民 K 歌基础库的实践中,在诸如 Orange CI 自动发布 npm 包等问题上就遇到了不少阻碍,我们把经验总结记录如下。 名词解释: Orange CI:腾讯内部开源的持续集成服务,类似于 Travis CI,一旦代码有变更,就自动运行构建和发布,并输出结果,是实现自动更新版本号及发布npm包的基础。 Monorepo:一种管理组织代码的方式,其主要
QQ音乐技术团队
2020/07/13
4K0
基于Vue3+TS的Monorepo前端项目架构设计与实现
你好,我是前端程序员鼓励师岩家兴!去年在另一个项目https://juejin.cn/post/7121736546000044046中,我向读者朋友们介绍了结合npm包管理工具yarn作vue3项目的monorepo架构设计。今天,在这个风和日丽阳光明媚的钱塘江畔,我心情很好,我打算再写一篇她的姊妹篇------基于Vue3+TS的Monorepo前端项目架构设计与实现(pnpm版本)。
江涛学编程
2023/02/26
1.6K0
基于Vue3+TS的Monorepo前端项目架构设计与实现
husky 7 + lint-staged 11+ prettier 2 + eslint 7 配置
基于最新的一些库来规范项目, 比如格式化和提交预处理等~ 一些库的最新版的配置更加独立了, 对于工程化来说,其实更加直观了~ 围绕react技术栈加入相关门禁来开展文章~
CRPER
2022/03/08
1.6K0
husky 7 + lint-staged 11+ prettier 2 + eslint 7 配置
【万字长文】从零配置一个vue组件库
本文会从零开始配置一个monorepo类型的组件库,包括规范化配置、打包配置、组件库文档配置及开发一些提升效率的脚本等,monorepo 不熟悉的话这里一句话介绍一下,就是在一个git仓库里包含多个独立发布的模块/包。
街角小林
2022/06/15
1K0
【万字长文】从零配置一个vue组件库
一套标准的前端代码工作流
工欲善其事,必先利其器。对于写代码而言,也是需要有一套完善的工作流(工具和流程)。
逆锋起笔
2021/03/17
1.3K0
前端基建处理之组件库优化方案
前端基建开发一直被认为是前端开发中的 “高阶技能”。而内部组件库的开发则算是基建中比较“容易”入手的一个方向。所以咱们今天就利用这篇文章,来看一看 组件库开发 的优化方案。
winty
2024/01/03
4700
前端基建处理之组件库优化方案
推荐阅读
相关推荐
带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验