深度是不断用新值递归调用 且新值执行完执行到底才会做下一个递归
看了一眼什么是深度优先和广度优先 然后算是一遍过 写的是广度优先
对于里面存的(x,y)对,本来是要创个类,但是在这块不会整哈哈哈哈 所以用了两个队列,分别存x和y
题解这块这么写的
题解里对上下左右建了两个1*4数组 分别是x+1 y+1 x-1 y-1的情况 更简洁
然后对于上下左右分情况讨论压入 颜色相同改颜色 由于已经改过的换了颜色 判断时就不符合颜色相同的要求了 不会无限循环不必设置已经进过队列
class Solution { public int[][] floodFill(int[][] image, int sr, int sc, int color) { int colorbefore=image[sr][sc]; if(colorbefore==color) { return image; } Queue<Integer> queuerow=new LinkedList<Integer>(); Queue<Integer> queueline=new LinkedList<Integer>(); queuerow.offer(sr); queueline.offer(sc); while(!queuerow.isEmpty()) { int row = queuerow.remove(); int line = queueline.remove(); if(image[row][line]==colorbefore) { image[row][line]=color; if(row!=0) { queuerow.offer(row-1); queueline.offer(line); } if(row!=image.length-1) { queuerow.offer(row+1); queueline.offer(line); } if(line!=0) { queuerow.offer(row); queueline.offer(line-1); } if(line!=image[0].length-1) { queuerow.offer(row); queueline.offer(line+1); } } } return image; } }
标签:offer,int,image,渲染,力扣,733,line,queuerow,row From: https://www.cnblogs.com/ayuanjiejie/p/17174721.html