利用宽度优先搜索的方法结合列表解决数组中的相同元素区域性问题, 找到满足条件的位置后开始BFS若周围有满足条件的点,继续BFS直到周围没有满足条件的点。下面三道题分别是修改区域元素内容,寻找有多少个满足条件的区域和修改特定位置的区域元素内容。思路上是相同的,只有细微的差别。
733.图像渲染
class Solution {
public:
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
int m = image.size(),n=image[0].size();
int pre=image[sr][sc];//记录选定位置颜色
if(pre==color) return image;
//如果选定位置颜色为目标颜色,则直接返回
queue<pair<int,int>> q;
q.push({sr,sc});
//建立一个列表并将初始位置坐标加入列表