M6 米乐【每日一题】778 水位上升的泳池中游泳

2023-09-01 00:18:54
浏览次数:
返回列表

  各位题友大家好,今天是每日算法题公众号坚持日更的第 6 天。今天力扣上的每日一题是

  在一个N x N的坐标方格grid中,每一个方格的值grid[i][j]表示在位置(i,j)的平台高度。

  求坐标方格的左上平台(0,0)出发,到达坐标方格的右下平台(N-1, N-1)的所有路径中的路径耗时最小值。

  最终的路线用加粗进行了标记。 我们必须等到时间为 16,此时才能保证平台 (0, 0) 和 (4, 4) 是连通的

  从左上角通往右下角的路径中,消耗的时间肯定是道路上最高的那个格子的高度。对于这种问题,也是像昨天题目一样,当做连通性问题来解决。

  昨天的每日一题为「1631. 最小体力消耗路径」,它是求从左上角到右下角的所有路径中的最小高度差绝对值,跟本题非常像。建议大家先阅读昨天的题解:1631. 最小体力消耗路径。

  需要注意题目中的一个条件:grid[i][j]是[0, ..., N*N - 1]的排列。因此M6 米乐图中没有大小相等的顶点。

  在每次遍历的过程中都要比较这个顶点的数值和其周围的 4 个相邻顶点的数值大小,来判断是否需要添加一条边:如果相邻节点的数值更小,说明该相邻顶点之前

  添加到图中,因此现在需要建立一条让两个顶点连通的边;如果相邻节点的数值更大,说明该相邻顶点之前

  当添加某一个顶点之后,最左上角的顶点和最右下角的顶点连通了,说明该顶点就是所求。

  本题原本的题面是个假设了一个下雨的场景,求下雨多久,才能左上角的位置游到右下角的位置。这种题面需要我们有抽象能力,即把题目中生活化的语言翻译成我们能理解的专业语言。比如我在题目大意中已经进行了对题目进行了翻译。题目抽象出来之后,能帮助我们决定用什么方法。

  今天的题目除了并查集方法之外,还能使用 BFS 或者 二分查找 + DFS 的方法,由于篇幅问题,就不展开了。可以在 负雪明烛 的 CSDN 上查看,地址是:zhu/article/details/82926674

  OK,这就是本次题解的全部内容了,如果你觉得我的题解对你有帮助的话,求赞、求关注、求转发、求在看。你的认可就是我前进的M6 米乐最大动力!我们明天再见!

搜索