【攻克力扣200题--38】417. 太平洋大西洋水流问题

mac2026-06-07  5

从边缘往里面考虑

var pacificAtlantic = function(matrix) { let m=matrix.length; let direction=[[-1,0],[1,0],[0,-1],[0,1]]; if(m==0) return []; let res=[]; let n=matrix[0].length; let canReachP=[...Array(m)].map(_=>([...Array(n)].map(_=>false))); let canReachA=[...Array(m)].map(_=>([...Array(n)].map(_=>false))); for(var i=0;i<m;i++){ dfs(i,0,canReachP); dfs(i,n-1,canReachA); } for(var j=0;j<n;j++){ dfs(0,j,canReachP); dfs(m-1,j,canReachA); } for(var i=0;i<m;i++){ for(var j=0;j<n;j++){ if(canReachP[i][j]&&canReachA[i][j]) res.push([i,j]); } } return res; function dfs(i,j,canReach){ if(canReach[i][j]) return; canReach[i][j]=true; for(var k=0;k<4;k++){ var nr=i+direction[k][0]; var nc=j+direction[k][1]; if(nr<0||nr>=m||nc<0||nc>=n||matrix[i][j]>matrix[nr][nc]) continue; dfs(nr,nc,canReach); } } };

 

最新回复(0)