4020. 电梯请求 I
题目描述
给你一个整数 n ,表示一栋楼房的楼层数,楼层编号从 0 到 n - 1 。
同时给你一个整数数组 requests ,其中 requests 表示楼层请求的序列。
一部电梯初始在 0 层,遵循以下规则:
- 电梯每秒移动一层。
- 电梯按给定的顺序处理请求。
- 如果电梯已经在请求的楼层,则不需要移动。
- 处理完一个请求后,电梯立即开始向下一个请求的楼层移动。
返回处理所有请求所需的 总时间 (以秒为单位)。
示例 1:
输入: n = 5, requests = [2,1,4,3]
输出: 7
解释:
requests[0] = 2:从 0 层移动到 2 层需要 2 秒。requests[1] = 1:从 2 层移动到 1 层需要 1 秒。requests[2] = 4:从 1 层移动到 4 层需要 3 秒。requests[3] = 3:从 4 层移动到 3 层需要 1 秒。
所需的总时间是 2 + 1 + 3 + 1 = 7 秒。
示例 2:
输入: n = 3, requests = [2,0,0]
输出: 4
解释:
requests[0] = 2:从 0 层移动到 2 层需要 2 秒。requests[1] = 0:从 2 层移动到 0 层需要 2 秒。requests[2] = 0:不需要移动。
所需的总时间是 2 + 2 + 0 = 4 秒。
提示:
1 <= n <= 1001 <= requests.length <= 1000 <= requests[i] <= n - 1
解法
方法一:模拟
电梯从 \(0\) 层出发,按给定顺序处理请求。相邻两次请求之间的移动时间为两层楼层编号之差的绝对值。第一个请求从 \(0\) 层到 \(\textit{requests}[0]\),耗时即为 \(\textit{requests}[0]\);之后将相邻请求的楼层差绝对值累加即可。
时间复杂度 \(O(m)\),空间复杂度 \(O(1)\)。其中 \(m\) 是请求的数量。
1 2 3 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 | |