在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ On an N x N Now rain starts to fall. At time You start at the top left square Example 1: Input: [[0,2],[1,3]] Output: 3 Explanation: At time Example 2: Input: [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]] Output: 16 Explanation: 0 1 2 3 4 24 23 22 21 5 12 13 14 15 16 11 17 18 19 20 10 9 8 7 6 The final route is marked in bold. We need to wait until time 16 so that (0, 0) and (4, 4) are connected.Note:
在一个 N x N 的坐标方格 现在开始下雨了。当时间为 你从坐标方格的左上平台 (0,0) 出发。最少耗时多久你才能到达坐标方格的右下平台 示例 1: 输入: [[0,2],[1,3]]
输出: 3
解释:
时间为0时,你位于坐标方格的位置为
示例2: 输入: [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]] 输入: 16 解释: 0 1 2 3 4 24 23 22 21 5 12 13 14 15 16 11 17 18 19 20 10 9 8 7 6 最终的路线用加粗进行了标记。 我们必须等到时间为 16,此时才能保证平台 (0, 0) 和 (4, 4) 是连通的 提示:
Runtime: 3588 ms
Memory Usage: 20.1 MB
1 class Solution { 2 var dirs:[[Int]] = [[0, -1],[-1, 0],[0, 1],[1, 0]] 3 func swimInWater(_ grid: [[Int]]) -> Int { 4 var grid = grid 5 var n:Int = grid.count 6 var dp:[[Int]] = [[Int]](repeating:[Int](repeating:Int.max,count:n),count:n) 7 helper(&grid, 0, 0, grid[0][0], &dp) 8 return dp[n - 1][n - 1] 9 } 10 11 func helper(_ grid:inout [[Int]],_ x:Int,_ y:Int,_ cur:Int,_ dp:inout [[Int]]) 12 { 13 var n:Int = grid.count 14 if x < 0 || x >= n || y < 0 || y >= n || max(cur, grid[x][y]) >= dp[x][y] 15 { 16 return 17 } 18 dp[x][y] = max(cur, grid[x][y]) 19 for dir in dirs 20 { 21 helper(&grid, x + dir[0], y + dir[1], dp[x][y], &dp) 22 } 23 } 24 }
|
请发表评论