2 Star 1 Fork 0

royce li/Leetcode_royce

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
pacificAtlantic.js 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
royce li 提交于 2022-04-28 20:46 . 2021/04/28
/**
* @param {number[][]} heights
* @return {number[][]}
*/
var pacificAtlantic = function(heights) {
const m = heights.length;
const n = heights[0].length;
const valid = (x, y) => x >= 0 && x < m && y >= 0 && y < n;
const tag = new Array(m).fill(false).map( _ => new Array(n).fill(0));
const directions = [[1, 0], [0, 1], [-1, 0], [0, -1]];
let ret = []
let x = 0; y = 0;
function trace(x, y, offset) {
if(x === 0 || y === 0) {
tag[x][y] |= (1 << offset);
}
if(x === m - 1 || y === n - 1) {
tag[x][y] |= (1 << offset);
}
if((tag[x][y] & (1 << offset)) !== 0) {
directions.forEach(d => {
const cx = x + d[0], cy = y + d[1];
if(valid(cx, cy) && heights[x][y] <= heights[cx][cy] && (tag[cx][cy] & (1 << offset)) === 0) {
// console.log(x, y, cx, cy, 1 << offset);
tag[cx][cy] |= (1 << offset);
trace(cx, cy, offset);
}
})
}
}
for(let i = 0; i < m; i++) {
trace(i, 0, 0);
}
for(let i = 0; i < n; i++) {
trace(0, i, 0);
}
for(let i = 0; i < m; i++) {
trace(i, n - 1, 1);
}
for(let i = 0; i < n; i++) {
trace(m - 1, i, 1);
}
for(let i = 0; i < m; i++) {
for(let j = 0; j < n; j++) {
if(tag[i][j] === 0b11) {
ret.push([i, j]);
}
}
}
// console.log(tag);
return ret;
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/royce-li/leetcode_royce.git
git@gitee.com:royce-li/leetcode_royce.git
royce-li
leetcode_royce
Leetcode_royce
master

搜索帮助