【发布时间】:2022-01-25 13:11:49
【问题描述】:
以下是我查找岛屿最大面积的代码,但由于某种原因,它一直未能通过此测试用例: [[1],[1]]
我不完全确定出了什么问题,并且我一直在考虑使用这种方法没有可能的解决方案。有人认为这段代码不能正常工作的一个可能原因是在底部的 for 循环中调用 dfs() 时 JS 的同步特性。
var maxAreaOfIsland = function(grid) {
let maxArea = 0
let currArea = 0
let dirs = [
[0,1],
[1,0],
[-1,0],
[0,-1]
]
function dfs(r,c){
if(grid[r][c] === 0) return
currArea++
grid[r][c] = 0
for(let [row,col] of dirs){
let nr = r+row
let nc = c+col
if(nr<0 || nc< 0|| nr >= grid.length|| nc >= grid[0].length){
return
}
dfs(nr,nc)
}
}
for(let i = 0; i < grid.length; i++){
for(let j = 0; j< grid[0].length; j++){
if(grid[i][j] === 1){
currArea = 0
dfs(i,j)
if(currArea > maxArea){
maxArea = currArea
}
}
}
}
return maxArea
};
console.log(maxAreaOfIsland( [[1],[1]] ))
【问题讨论】:
标签: javascript algorithm