房山重庆网站建设,中国都在那个网站上做外贸,外贸公司的经营范围,巩义企业网站建设有一幅以二维整数数组表示的图画#xff0c;每一个整数表示该图画的像素值大小#xff0c;数值在 0 到 65535 之间。
给你一个坐标 (sr, sc) 表示图像渲染开始的像素值#xff08;行 #xff0c;列#xff09;和一个新的颜色值 newColor#xff0c;让你重新上色这幅图像…有一幅以二维整数数组表示的图画每一个整数表示该图画的像素值大小数值在 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 因为它不是在上下左右四个方向上与初始点相连的像素点。
代码
class Solution {public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {int nimage.length,mimage[0].length,targetimage[sr][sc];if(targetnewColor) return image;int[][] dirnew int[][]{{-1,0},{1,0},{0,1},{0,-1}};Queueint[] queuenew LinkedList();queue.offer(new int[]{sr,sc});while (!queue.isEmpty()){int[] curqueue.poll();int cxcur[0],cycur[1];for(int[] d:dir){int nxcxd[0],nycyd[1];if(nx0||nxn||ny0||nym||image[nx][ny]!target) continue;queue.offer(new int[]{nx,ny});}image[cx][cy]newColor;}return image;}
}