Open adfvcdxv opened 9 months ago
var swimInWater = function (grid) { let n = grid.length let low = grid[0][0] let high = n * n while (low < high) { let mid = Math.floor((low + high) / 2) if (!isCanSwim(mid, grid)) { low = mid + 1 } else { high = mid } } return low }; const isCanSwim = (t, grid) => { let n = grid.length let vis = Array.from(Array(n), () => Array(n).fill(false)) let dfs = (row, col) => { if (row < 0 || col < 0 || row >= n || col >= n || vis[row][col] || grid[row][col] > t) { return false } if (row == n - 1 && col == n - 1) { return true } vis[row][col] = true return dfs(row + 1, col) || dfs(row - 1, col) || dfs(row, col + 1) || dfs(row, col - 1); } return dfs(0, 0) }