赞
踩
这个题目作为dfs到FloodFill的过渡,FloodFill算法解决的问题就是在找相同的区域块,在本题中,题目给出了具体的位置,而且只有一片区域,那么只需要对这个区域做一个dfs即可,和之前的二维dfs思路和代码设计过程是一样的
- class Solution
- {
- int newcolor;
- int oldcolor;
- int m,n;
- public:
- vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color)
- {
- if(image[sr][sc] == color)
- return image;
- newcolor = color;
- oldcolor = image[sr][sc];
- m = image.size();
- n = image[0].size();
- dfs(image,sr,sc);
- return image;
- }
- int dx[4] = {-1,1,0,0};
- int dy[4] = {0,0,-1,1};
- void dfs(vector<vector<int>>& image,int row,int col)
- {
- image[row][col] = newcolor;
- for(int k = 0;k<4;k++)
- {
- int x = row + dx[k];
- int y = col + dy[k];
- if(x>=0 && x<m && y>=0 && y<n && image[x][y] == oldcolor)
- {
- dfs(image,x,y);
- }
- }
- }
- };
简单总结一下,用C++写的,这题算是dfs过渡到 FloodFill算法的一题
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。