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[0]米的道路连接回房屋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
解释:
经过路径是 0 → 1 → 2 → 3 → 0。每一步都在前向方向,需要 1 秒。
提示:
2 <= n <= 105n == forward.length == backward.length1 <= forward[i], backward[i] <= 1051 <= queries.length <= 1050 <= queries[i] < nqueries[i] != queries[i + 1]queries[0]非 0。
解法
方法一
1 | |
1 | |
1 | |
1 | |