/** * @param {number[][]}grid * @return {number} */ var maxDistance = function(grid) { var lands = []; var rows = grid.length; var cols = grid[0].length; var res = -1;
// 找出所有的陆地的坐标 for (var i = 0; i < rows; i++) { for (var j = 0; j < cols; j++) { if (grid[i][j] === 1) { lands.push([i, j]); } } }
// 全是陆地或海洋 if (!lands.length || lands.length === rows * cols) return -1; // 遍历所有陆地 while (lands.length > 0) { var len = lands.length; while (len > 0) { len--; var land = lands.shift(); // 删掉第一元素 // 向4个方向搜索 // 上、右、下、左 var ways = [ [-1, 0], [0, 1], [1, 0], [0, -1] ]; for (var i = 0; i < 4; i++) { var row = land[0] + ways[i][0]; // row 方向 var col = land[1] + ways[i][1]; // col 方向 // 判断是否越界 if ( row < 0 || row >= rows || col < 0 || col >= cols || (grid[row] && grid[row][col] === 1) ) { continue; }