【BFS 解决 FloodFill 算法】1. 图像渲染(medium)

BFS 解决 FloodFill 算法

1. 图像渲染(medium)

题⽬链接:733. 图像渲染

题⽬描述:

有⼀幅以 m x n 的⼆维整数数组表⽰的图画 image ,其中 imageij 表⽰该图画的像素值⼤⼩。

你也被给予三个整数 sr , sc 和 newColor 。你应该从像素 imagesrsc 开始对图像进⾏ 上⾊填充。

为了完成 上⾊⼯作 ,从初始像素开始,记录初始坐标的 上下左右四个⽅向上 像素值与初始坐标相同的相连像素点,接着再记录这四个⽅向上符合条件的像素点与他们对应 四个⽅向上 像素值与初始坐标相同的相连像素点,......,重复该过程。将所有有记录的像素点的颜⾊值改为newColor 。

最后返回 经过上⾊渲染后的图像 。

⽰例 1:

输⼊: image = \[1,1,1,1,1,0,1,0,1],sr = 1, sc = 1, newColor = 2

输出: \[2,2,2,2,2,0,2,0,1]

解析: 在图像的正中间,(坐标(sr,sc)=(1,1)),在路径上所有符合条件的像素点的颜⾊都被更改成2。

注意,右下⻆的像素没有更改为 2,因为它不是在上下左右四个⽅向上与初始点相连的像素点。

⽰例 2:

输⼊: image = \[0,0,0,0,0,0], sr = 0, sc = 0, newColor = 2

输出: \[2,2,2,2,2,2]

算法思路:

可以利⽤「深搜」或者「宽搜」,遍历到与该点相连的所有「像素相同的点」,然后将其修改成指定的像素即可。

算法代码:

java 复制代码
class Solution
{
 int[] dx = {0, 0, 1, -1};
 int[] dy = {1, -1, 0, 0};
 public int[][] floodFill(int[][] image, int sr, int sc, int color) 
 {
	 int prev = image[sr][sc]; // 统计刚开始的颜⾊
	 if(prev == color) return image; // 处理边界情况
	 int m = image.length, n = image[0].length;
	 Queue<int[]> q = new LinkedList<>();
	 q.add(new int[]{sr, sc});
	 while(!q.isEmpty())
	 {
		 int[] t = q.poll();
		 int a = t[0], b = t[1];
		 image[a][b] = color;
		 // 上下左右四个⽅向
		 for(int i = 0; i < 4; i++)
		 {
		 	int x = a + dx[i], y = b + dy[i];
			 if(x >= 0 && x < m && y >= 0 && y < n && image[x][y] == prev)
			 {
			 	q.add(new int[]{x, y});
			 }
		 }
	 }
	 return image;
 }
}
相关推荐
牧瀬クリスだ1 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
木井巳1 小时前
【动态规划: 路径问题】下降路径最小和
java·算法·leetcode·动态规划·推荐算法
deepseek232 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技2 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
青少儿编程课堂2 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
荆棘鸟智能3 小时前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
DFT计算杂谈3 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf
绕灵儿4 小时前
火灾检测-应用场景-YOLO训练记录
人工智能·算法
YLCHUP4 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
(●—●)橘子……4 小时前
力扣 第525场周赛 练习理解
数据结构·python·学习·算法·leetcode