3687. 图书馆逾期罚款计算器 🔒
题目描述
给定一个整数数组 daysLate,其中 daysLate[i] 表示第 i 书的归还日期晚了几天。
罚款计算如下:
- 如果
daysLate[i] == 1,罚款为 1。 - 如果
2 <= daysLate[i] <= 5,罚款为2 * daysLate[i]。 - 如果
daysLate[i] > 5,罚款为3 * daysLate[i]。
返回所有书的总罚款。
示例 1:
输入:daysLate = [5,1,7]
输入:32
解释:
daysLate[0] = 5:罚款是2 * daysLate[0] = 2 * 5 = 10。daysLate[1] = 1:罚款是1。daysLate[2] = 7:罚款是3 * daysLate[2] = 3 * 7 = 21。- 因此,总罚款为
10 + 1 + 21 = 32。
示例 2:
输入:daysLate = [1,1]
输出:2
解释:
daysLate[0] = 1:罚款为1。daysLate[1] = 1:罚款为1。- 因此,总罚款为
1 + 1 = 2。
提示:
1 <= daysLate.length <= 1001 <= daysLate[i] <= 100
解法
方法一:模拟
我们定义一个函数 \(\text{f}(x)\) 来计算每本书的罚款:
\[
\text{f}(x) = \begin{cases}
1 & x = 1 \\
2x & 2 \leq x \leq 5 \\
3x & x > 5
\end{cases}
\]
然后我们对数组 \(\textit{daysLate}\) 中的每个元素 \(x\) 计算 \(\text{f}(x)\) 并累加得到总罚款。
时间复杂度 \(O(n)\),其中 \(n\) 是数组 \(\textit{daysLate}\) 的长度。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 | |