求个网站或者app,肇庆seo排名外包,怎么做网站服务器,网架公司运营经验题目描述#xff1a;
有一幅以 m x n 的二维整数数组表示的图画 image #xff0c;其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行上色 填充 。
为了完成 上色工作#xff1a;
从初始像素…题目描述
有一幅以 m x n 的二维整数数组表示的图画 image 其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行上色 填充 。
为了完成 上色工作
从初始像素开始将其颜色改为 color。对初始坐标的 上下左右四个方向上 相邻且与初始像素的原始颜色同色的像素点执行相同操作。通过检查与初始像素的原始颜色相同的相邻像素并修改其颜色来继续 重复 此过程。当 没有 其它原始颜色的相邻像素时 停止 操作。
最后返回经过上色渲染 修改 后的图像 。
示例 1: 输入image [[1,1,1],[1,1,0],[1,0,1]]sr 1, sc 1, color 2
输出[[2,2,2],[2,2,0],[2,0,1]]
解释在图像的正中间坐标 (sr,sc)(1,1) 即红色像素,在路径上所有符合条件的像素点的颜色都被更改成相同的新颜色即蓝色像素。
注意右下角的像素 没有 更改为2因为它不是在上下左右四个方向上与初始点相连的像素点。 示例 2:
输入image [[0,0,0],[0,0,0]], sr 0, sc 0, color 0
输出[[0,0,0],[0,0,0]]
解释初始像素已经用 0 着色这与目标颜色相同。因此不会对图像进行任何更改。 提示:
m image.lengthn image[i].length1 m, n 500 image[i][j], color 2160 sr m0 sc n
题目链接
. - 力扣LeetCode
解题主要思路
采用广度优先遍历策略即bfs比如例1第一层为image[1][1]我们将它入队列然后检测它的上下左右符合要求的为image[0][1]和image[1][0]以此为例继续探索第三层。
解题代码
class Solution {
public:typedef pairint, int PII;int dx[4] {0, 0, 1, -1};int dy[4] {1, -1, 0, 0};vectorvectorint floodFill(vectorvectorint image, int sr, int sc, int color) {int pre image[sr][sc];if (pre color) return image;int m image.size(), n image[0].size();queuePII que;que.push(make_pair(sr, sc));while (que.size()) {auto [a, b] que.front();que.pop();image[a][b] color; // 上色for (int i 0; i 4; i) {// 检测它的上下左右是否需要上色int x a dx[i];int y b dy[i];if (x 0 x m y 0 y n image[x][y] pre) {que.push(make_pair(x, y));}}}return image;}
};