跳转至

3540. 访问所有房屋的最短时间 🔒

题目描述

给定两个整数数组 forward 和 backward,长度都为 n。同时给定另一个整数数组 queries

有 n 个排列为环形的房屋。房屋通过道路以特殊方式相连:

  • 对于所有的 0 <= i <= n - 2,房屋 i 通过一条长度为 forward[i] 米的道路连接到房屋 i + 1。另外,房屋 n - 1 通过一条长度为 forward[n - 1] 米的道路连接回房屋 0,形成一个环。
  • 对于所有的 1 <= i <= n - 1,房屋 i 通过一条长度为 backward[i] 米的道路连接到房屋 i - 1。另外,房屋 0 通过一条长度为 backward[n - 1] 米的道路连接回房屋 n - 1,形成一个环。

你可以以 1 米每秒的速度行走。从房屋 0 开始,找到按照 queries 指定的顺序访问每所房屋的 最小 时间。

返回访问房屋所需的 最短 总时间。

 

示例 1:

输入:forward = [1,4,4], backward = [4,1,2], queries = [1,2,0,2]

输出:12

解释:

路径如下:0(0)1(1)2(5) 1(7) 0(8) 2(12)

注意:使用的 node(total time) 符号, 表示前向道路, 表示反向道路。

示例 2:

输入:forward = [1,1,1,1], backward = [2,2,2,2], queries = [1,2,3,0]

输出:4

解释:

经过路径是 012 →​​​​​​​ 30。每一步都在前向方向,需要 1 秒。

 

提示:

  • 2 <= n <= 105
  • n == forward.length == backward.length
  • 1 <= forward[i], backward[i] <= 105
  • 1 <= queries.length <= 105
  • 0 <= queries[i] < n
  • queries[i] != queries[i + 1]
  • queries[0] 非 0。

解法

方法一

1

1

1

1

评论