733 图像渲染,695 岛屿的最大面积
图像渲染
广度优先搜索
var(
dx = []int{1,0,-1,0}
dy = []int{0,1,0,-1}
)
func floodFill(image [][]int, sr int, sc int, newColor int) [][]int {
curcolor:=image[sr][sc]
if curcolor==newColor{
return image
}
n,m:=len(image),len(image[0])
queue:=[][]int{}
queue=append(queue,[]int{sr,sc})
image[sr][sc]=newColor
for i:=0;i<len(queue);i++{
cell:=queue[i]
for j:=0;j<4;j++{
mx,my:=cell[0]+dx[j],cell[1]+dy[j]
if mx>=0&&mx<n&&my>=0&&my<m&&image[mx][my]==curcolor{
queue=append(queue,[]int{mx,my})
image[mx][my]=newColor
}
}
}
return image
}
深度优先搜索
var(
dx = []int{1,0,-1,0}
dy = []int{0,1,0,-1}
)
func dfs(image [][]int,x,y,curcolor,newColor int){
if image[x][y]==curcolor{
image[x][y]=newColor
for i:=0;i<4;i++{
mx, my := x + dx[i], y + dy[i]
if mx >= 0 && mx < len(image) && my >= 0 && my < len(image[0]) {
dfs(image, mx, my, curcolor, newColor)
}
}
}
}
func floodFill(image [][]int, sr int, sc int, newColor int) [][]int {
curcolor:=image[sr][sc]
if curcolor!=newColor{
dfs(image,sr,sc,curcolor,newColor)
}
return image
}
来源:力扣(LeetCode)
岛屿的最大面积
深度优先搜索
var(
dx=[]int{1,0,-1,0}
dy=[]int{0,1,0,-1}
)
func dfs(grid [][]int,cur_i,cur_j int) int{
if cur_i<0||cur_j<0||cur_i>=len(grid)||cur_j>=len(grid[0])||grid[cur_i][cur_j]!=1{
return 0
}
grid[cur_i][cur_j]=0
ans:=1
for i:=0;i<4;i++{
next_i:=cur_i+dx[i]
next_j:=cur_j+dy[i]
ans+=dfs(grid,next_i,next_j)
}
return ans
}
func maxAreaOfIsland(grid [][]int) int {
ans:=0
for i:=0;i<len(grid);i++{
for j:=0;j<len(grid[0]);j++{
function_ans:=dfs(grid,i,j)
if ans<function_ans{
ans=function_ans
}
}
}
return ans
}