Welcome to Subscribe On Youtube
3687. Library Late Fee Calculator 🔒
Description
You are given an integer array daysLate where daysLate[i] indicates how many days late the ith book was returned.
The penalty is calculated as follows:
- If
daysLate[i] == 1, penalty is 1. - If
2 <= daysLate[i] <= 5, penalty is2 * daysLate[i]. - If
daysLate[i] > 5, penalty is3 * daysLate[i].
Return the total penalty for all books.
Example 1:
Input: daysLate = [5,1,7]
Output: 32
Explanation:
daysLate[0] = 5: Penalty is2 * daysLate[0] = 2 * 5 = 10.daysLate[1] = 1: Penalty is1.daysLate[2] = 7: Penalty is3 * daysLate[2] = 3 * 7 = 21.- Thus, the total penalty is
10 + 1 + 21 = 32.
Example 2:
Input: daysLate = [1,1]
Output: 2
Explanation:
daysLate[0] = 1: Penalty is1.daysLate[1] = 1: Penalty is1.- Thus, the total penalty is
1 + 1 = 2.
Constraints:
1 <= daysLate.length <= 1001 <= daysLate[i] <= 100
Solutions
Solution 1: Simulation
We define a function $\text{f}(x)$ to calculate the late fee for each book:
\[\text{f}(x) = \begin{cases} 1 & x = 1 \\ 2x & 2 \leq x \leq 5 \\ 3x & x > 5 \end{cases}\]Then, for each element $x$ in the array $\textit{daysLate}$, we compute $\text{f}(x)$ and sum them up to get the total late fee.
The time complexity is $O(n)$, where $n$ is the length of the array $\textit{daysLate}$. The space complexity is $O(1)$.
-
class Solution { public int lateFee(int[] daysLate) { IntUnaryOperator f = x -> { if (x == 1) { return 1; } else if (x > 5) { return 3 * x; } else { return 2 * x; } }; int ans = 0; for (int x : daysLate) { ans += f.applyAsInt(x); } return ans; } } -
class Solution { public: int lateFee(vector<int>& daysLate) { auto f = [](int x) { if (x == 1) { return 1; } else if (x > 5) { return 3 * x; } else { return 2 * x; } }; int ans = 0; for (int x : daysLate) { ans += f(x); } return ans; } }; -
class Solution: def lateFee(self, daysLate: List[int]) -> int: def f(x: int) -> int: if x == 1: return 1 if x > 5: return 3 * x return 2 * x return sum(f(x) for x in daysLate) -
func lateFee(daysLate []int) (ans int) { f := func(x int) int { if x == 1 { return 1 } else if x > 5 { return 3 * x } return 2 * x } for _, x := range daysLate { ans += f(x) } return } -
function lateFee(daysLate: number[]): number { const f = (x: number): number => { if (x === 1) { return 1; } else if (x > 5) { return 3 * x; } return 2 * x; }; return daysLate.reduce((acc, days) => acc + f(days), 0); }