#青训营笔记创作活动# 问题描述
小F被神秘力量带入了一个魔幻世界,这里危机四伏。为了在异世界中生存,小F需要找到安全区。异世界可以被表示为一个大小为n x m的二维数组,每个格子的值代表该位置的危险程度。
小F的能力值为X,当某个格子的危险程度小于等于X时,这个格子是安全的。如果多个安全的格子相邻(上下左右连通),它们可以构成一个安全区。你需要帮助小F计算出一共有多少个安全区。
测试样例
样例1:
输入:n = 3, m = 3, X = 4, a = [[2, 3, 3], [3, 3, 3], [3, 3, 3]]
输出:1
样例2:
输入:n = 2, m = 2, X = 5, a = [[6, 6], [6, 4]]
输出:1
样例3:
输入:n = 3, m = 3, X = 3, a = [[1, 2, 2], [2, 3, 3], [3, 4, 5]]
输出:1
题解:
一个原二维数组,新建一个visited数组记录是否经过,直接全部遍历,遇到安全值小于能力值且没经过的点就进入while循环。while循环通过队列实现安全区域的搜寻,通过maxnum记录安全区域的个数。
#青训营笔记创作活动#
1月16日 Day3
Monorepo —— 一个重要的项目管理方式什么是Monorepo?最简单的理解就是把多个项目放到一个仓库里面,它是一种模式,也可以理解成是一种环境,与其对立的是MultiRepo模式,即一个项目对应一个仓库。现在的前端基本上都在往Monorepo靠拢,所以这种开发模式是我们一定要熟悉的。一般的Monorepo的模式就是在 packages 存放多个子项目,并且每个子项目都有自己的package.json
Monorepo的优势?
1.代码复用
在维护多个项目时,当出现bug时,或者需要修改一部分代码时,就需要修改多个项目中的代码,成本高。因为不同的仓库工作区的割裂,导致复用代码的成本很高,开发调试的流程繁琐,甚至在基础库频繁改动的情况下体验会很差。
2.版本管理
依赖包的管理是开发中很重要的一环,但在这里就存在着一个问题,比如刚开始一个工具包的版本是1.0.0,有很多项目都依赖于这个包,但是有一天,这个包发布了一个新的版本,和原来版本中的API完全不兼容,但是有很多项目并没有升级这个依赖,就会导致报错,而如果是一个项目对应一个仓库,那就需要对每个仓库也就是package.json进行依赖升级,当项目多的时候就会很麻烦,如果是Monorepo环境下,就只需要升级一次就可以了。
3.项目基建
如果每个项目由一个仓库管理,那每个项目都需要单独配置开发环境、配置部署发布流程等,甚至每个项目都有自己单独的一套脚手架工具。但这些东西的逻辑其实是相似的,这就增加了重复的工作量,同时如果各个操作规范不统一,那管理起来将会非常麻烦。
4.团队协作
团队在一个仓库开发,能够方便地共享和复用代码,方便检索项目源码,同时,git commit 的历史记录也支持以功能为单位进行提交,所以只需要提交一次,简化了 commit 记录,方便协作。
现在已经有一些集成的Monorepo方案,比如nx,rushstack,不过由于这些顶层方案内部各种流程和工具链都已经非常完善了,如果要基于这些方案来定制,适配和维护的成本过高,可行度也比较低。
1月16日 Day3
Monorepo —— 一个重要的项目管理方式什么是Monorepo?最简单的理解就是把多个项目放到一个仓库里面,它是一种模式,也可以理解成是一种环境,与其对立的是MultiRepo模式,即一个项目对应一个仓库。现在的前端基本上都在往Monorepo靠拢,所以这种开发模式是我们一定要熟悉的。一般的Monorepo的模式就是在 packages 存放多个子项目,并且每个子项目都有自己的package.json
Monorepo的优势?
1.代码复用
在维护多个项目时,当出现bug时,或者需要修改一部分代码时,就需要修改多个项目中的代码,成本高。因为不同的仓库工作区的割裂,导致复用代码的成本很高,开发调试的流程繁琐,甚至在基础库频繁改动的情况下体验会很差。
2.版本管理
依赖包的管理是开发中很重要的一环,但在这里就存在着一个问题,比如刚开始一个工具包的版本是1.0.0,有很多项目都依赖于这个包,但是有一天,这个包发布了一个新的版本,和原来版本中的API完全不兼容,但是有很多项目并没有升级这个依赖,就会导致报错,而如果是一个项目对应一个仓库,那就需要对每个仓库也就是package.json进行依赖升级,当项目多的时候就会很麻烦,如果是Monorepo环境下,就只需要升级一次就可以了。
3.项目基建
如果每个项目由一个仓库管理,那每个项目都需要单独配置开发环境、配置部署发布流程等,甚至每个项目都有自己单独的一套脚手架工具。但这些东西的逻辑其实是相似的,这就增加了重复的工作量,同时如果各个操作规范不统一,那管理起来将会非常麻烦。
4.团队协作
团队在一个仓库开发,能够方便地共享和复用代码,方便检索项目源码,同时,git commit 的历史记录也支持以功能为单位进行提交,所以只需要提交一次,简化了 commit 记录,方便协作。
现在已经有一些集成的Monorepo方案,比如nx,rushstack,不过由于这些顶层方案内部各种流程和工具链都已经非常完善了,如果要基于这些方案来定制,适配和维护的成本过高,可行度也比较低。
展开
评论
点赞