【leetcode】 面试题 08.10. 颜色填充

一、题目

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。

待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor 。

「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。

请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

【leetcode】 面试题 08.10. 颜色填充_第1张图片 

二、解题思路

        想要求某个点的相邻区域,一般采用深搜。

三、代码

class Solution {
	//定义 上、左、下、右四个方向
    int[][] dir= {{-1,0},{0,-1},{1,0},{0,1}};
	
	public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        int origion=image[sr][sc];
		dfs(image,sr,sc,newColor,new int[image.length][image[0].length],origion);
		return image;
	}
	
	public void dfs(int[][] image, int sr, int sc, int newColor,int[][] visited,int origion) {
		//当前点填充为新的颜色
        image[sr][sc]=newColor;
		//枚举四个方向
		for(int i=0;i=0 && x=0 && y

四、运行结果

【leetcode】 面试题 08.10. 颜色填充_第2张图片

你可能感兴趣的:(Leetcode刷题笔记,#,深搜与广搜,leetcode,算法,java,数据结构,面试)