算法---边界着色

news/2024/10/17 13:27:08/

题目

给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。

两个网格块属于同一 连通分量 需满足下述全部条件:

两个网格块颜色相同
在上、下、左、右任意一个方向上相邻
连通分量的边界 是指连通分量中满足下述条件之一的所有网格块:

在上、下、左、右任意一个方向上与不属于同一连通分量的网格块相邻
在网格的边界上(第一行/列或最后一行/列)
请你使用指定颜色 color 为所有包含网格块 grid[row][col] 的 连通分量的边界 进行着色,并返回最终的网格 grid 。

示例 1:

输入:grid = [[1,1],[1,2]], row = 0, col = 0, color = 3
输出:[[3,3],[3,2]]
示例 2:

输入:grid = [[1,2,2],[2,3,2]], row = 0, col = 1, color = 3
输出:[[1,3,3],[2,3,3]]
示例 3:

输入:grid = [[1,1,1],[1,1,1],[1,1,1]], row = 1, col = 1, color = 2
输出:[[2,2,2],[2,1,2],[2,2,2]]

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 50
1 <= grid[i][j], color <= 1000
0 <= row < m
0 <= col < n

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/coloring-a-border
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解决方法

    //一定要注意是边界fun colorBorder(grid: Array<IntArray>, row: Int, col: Int, color: Int): Array<IntArray> {//简单粗暴 直接按照思路走//题意有点难懂 边界 val dp = Array(grid.size) {BooleanArray(grid[0].size) { false }}//注意这里需要对二维数组 进行深copyval copyOf = grid.map { t -> t.copyOf() }.toTypedArray()dfs(grid, grid[row][col], color, row, col, dp,copyOf)return grid}fun dfs(grid: Array<IntArray>, old: Int, new: Int, row: Int, col: Int, dp: Array<BooleanArray>, origin: Array<IntArray>) {if (row in grid.indices && col in grid[0].indices && origin[row][col] == old && !dp[row][col]) {dp[row][col] = trueif (row == 0 || row == grid.size - 1 || col == 0 || col == grid[0].size - 1 || board(origin,row,col)) {grid[row][col] = new}dfs(grid, old, new, row + 1, col, dp,origin)dfs(grid, old, new, row, col + 1, dp,origin)dfs(grid, old, new, row - 1, col, dp,origin)dfs(grid, old, new, row, col - 1, dp,origin)}}fun board(grid: Array<IntArray>, row: Int, col: Int) : Boolean{if (row in grid.indices && col in grid[0].indices){if (grid[row + 1][col] != grid[row][col] ||grid[row - 1][col] != grid[row][col] ||grid[row ][col + 1] != grid[row][col] ||grid[row ][col - 1] != grid[row][col]){return true}}return false}

总结

1.既生瑜 何生亮
最近在看三国 几年前我也看过几次 但是从来都是看不到多少章就不看了
现在有二周了 看了上半部分了
感觉有些书。不到一些年纪就是读不进去
而且有些精彩的部分 看不懂 但是也不影响看懂的部分的精彩
读取一遍能够全部吸收。我觉得至少我认识的人中没有人能做到
长篇小说就是需要耐心、不可急躁
年轻就是容易急躁
也不懂的欣赏一些作品
现在我学会去以欣赏的角度问自己:
为什么三国可以成为经典?一定有他精彩的地方
这个精彩的地方我不想别人告诉我
我想自己去看看


http://www.ppmy.cn/news/107335.html

相关文章

SSH配置密钥免密码登录

1.生成key 在本地主机输入以下命令 [rootlocalhost ~]# ssh-keygen 一直回车 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passphrase (empty for no passphrase): Enter s…

信创办公–基于WPS的EXCEL最佳实践系列 (规整数据摆放)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;规整数据摆放&#xff09; 目录 应用背景操作步骤1、数据排序2、例如&#xff1a;职务按照 经理-主任-职员 排序3、排列第二种方法4、实操案例5、案例练习一方法一&#xff1a;通过公式函数增加辅助列方法二&#xff1a;用辅…

变电站与智能变电站

变电站 概念&#xff1a;变电站是指电力系统中对电业和电流进行变换&#xff0c;接受电能和分配电能的场所。在发电厂内的变电站是升压变压站&#xff0c;其作用是将发电机发出的电能升压后馈送到高压电网中。 分类 一类变电站。是指交流特高压站&#xff0c;核电、大型能源…

LeetCode——可被三整除的偶数的平均值

#全国科技者工作日—为创新和未来而努力# 目录 1、题目 2、题目解读 3、代码 1、题目 2455. 可被三整除的偶数的平均值 - 力扣&#xff08;Leetcode&#xff09; 给你一个由正整数组成的整数数组 nums &#xff0c;返回其中可被 3 整除的所有偶数的平均值。 注意&#xff…

IDS 和 IPS 日志监控

什么是IDS/IPS 入侵检测系统 &#xff08;IDS&#xff09; 和入侵防御系统 &#xff08;IPS&#xff09; 是监视组织网络中的流量以检测和防止恶意活动和策略违规的网络组件。 入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09;可以说是企业…

财务共享五大价值助力央企构建世界一流财务管理体系

如果说小微企业是我国市场经济的毛细血管的话&#xff0c;那么央企就是承载着我国市场发展的主动脉。以规模为导向来看&#xff0c;央企完成了第一次长征&#xff0c;但央企在盈利能力、市场份额、行业地位、专利技术与优势、品牌影响力、市值管理、标准和规则制定话语权等软实…

监控组件的装置、计算设备、存储介质及部署方法

企业服务系统监控体系的瓶颈 伴随着企业系统的迭代升级&#xff0c;其规模和复杂性也在快速增加&#xff0c;由一个比较简单的服务&#xff0c;发展为体系庞大、功能健壮的系统&#xff0c;受到管理者们高度重视。要解决问题&#xff0c;首先要发现问题。目前市场上存在的监控系…

某二手车逆向研究,竟然如此……

目录 一、逆向目标二、网站分析三、加密参数分析四、加密数据分析五、思路总结六、完整项目下载七、作者Info 一、逆向目标 通过抓包技术找出请求头的加密参数&#xff0c;当然也包括cookie&#xff0c;以及响应数据中的加密过的或编码过的数据&#xff0c;通过xhr/fetch请求定…