733. 图像渲染
有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。
给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 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, 因为它不是在上下左右四个方向上与初始点相连的像素点。
注意:
image 和 image[0] 的长度在范围 [1, 50] 内。
给出的初始点将满足 0 <= sr < image.length 和 0 <= sc < image[0].length。
image[i][j] 和 newColor 表示的颜色值在范围 [0, 65535]内。
class Solution { public int[][] floodFill(int[][] image, int sr, int sc, int newColor) { int tar = image[sr][sc]; if (newColor == tar) { return image; } fill(image, sr, sc, newColor, tar); return image; } private void fill(int[][] image, int sr, int sc, int newColor, int tar) { if (sr < 0 || sc < 0 || sr >= image.length || sc >= image[0].length || image[sr][sc] != tar) { return; } image[sr][sc] = newColor; fill(image, sr - 1, sc, newColor, tar); fill(image, sr, sc - 1, newColor, tar); fill(image, sr + 1, sc, newColor, tar); fill(image, sr, sc + 1, newColor, tar); } }
热门文章
- 动物疫苗在哪里买的到正规的(动物疫苗在哪打)
- python——json,dict之间的转换load,dump, loads, dumps
- 4月15日 | Clash Verge每天更新21.4M/S免费节点订阅链接地址
- [DEBUG] QAT Nginx for docker 部署时”–with-ld-opt”出错
- 人用针剂跟畜用针剂一样吗(兽用针和人用针的针同的吗?)
- Spring Boot + Mybatis-Plus + jasypt 数据库连接加密
- 设计模式(9) 观察者模式
- 3月7日 | Clash Verge每天更新20.5M/S免费节点订阅链接地址
- 兽用疫苗可以m网上买吗(兽用疫苗审批流程)
- 3月18日 | Clash Verge每天更新18.1M/S免费节点订阅链接地址