2806. Account Balance After Rounded Purchase
Description
Initially, you have a bank account balance of 100 dollars.
You are given an integer purchaseAmount
representing the amount you will spend on a purchase in dollars, in other words, its price.
When making the purchase, first the purchaseAmount
is rounded to the nearest multiple of 10. Let us call this value roundedAmount
. Then, roundedAmount
dollars are removed from your bank account.
Return an integer denoting your final bank account balance after this purchase.
Notes:
- 0 is considered to be a multiple of 10 in this problem.
- When rounding, 5 is rounded upward (5 is rounded to 10, 15 is rounded to 20, 25 to 30, and so on).
Example 1:
Input: purchaseAmount = 9
Output: 90
Explanation:
The nearest multiple of 10 to 9 is 10. So your account balance becomes 100 - 10 = 90.
Example 2:
Input: purchaseAmount = 15
Output: 80
Explanation:
The nearest multiple of 10 to 15 is 20. So your account balance becomes 100 - 20 = 80.
Example 3:
Input: purchaseAmount = 10
Output: 90
Explanation:
10 is a multiple of 10 itself. So your account balance becomes 100 - 10 = 90.
Constraints:
0 <= purchaseAmount <= 100
Solutions
Solution 1: Enumeration + Simulation
We enumerate all multiples of 10 within the range $[0, 100]$, and find the one that is closest to purchaseAmount
, denoted as $x$. The answer is $100 - x$.
The time complexity is $O(1)$, and the space complexity is $O(1)$.
Python3
class Solution:
def accountBalanceAfterPurchase(self, purchaseAmount: int) -> int:
diff, x = 100, 0
for y in range(100, -1, -10):
if (t := abs(y - purchaseAmount)) < diff:
diff = t
x = y
return 100 - x
Java
class Solution {
public int accountBalanceAfterPurchase(int purchaseAmount) {
int diff = 100, x = 0;
for (int y = 100; y >= 0; y -= 10) {
int t = Math.abs(y - purchaseAmount);
if (t < diff) {
diff = t;
x = y;
}
}
return 100 - x;
}
}
C++
class Solution {
public:
int accountBalanceAfterPurchase(int purchaseAmount) {
int diff = 100, x = 0;
for (int y = 100; y >= 0; y -= 10) {
int t = abs(y - purchaseAmount);
if (t < diff) {
diff = t;
x = y;
}
}
return 100 - x;
}
};
Go
func accountBalanceAfterPurchase(purchaseAmount int) int {
diff, x := 100, 0
for y := 100; y >= 0; y -= 10 {
t := abs(y - purchaseAmount)
if t < diff {
diff = t
x = y
}
}
return 100 - x
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
TypeScript
function accountBalanceAfterPurchase(purchaseAmount: number): number {
let [diff, x] = [100, 0];
for (let y = 100; y >= 0; y -= 10) {
const t = Math.abs(y - purchaseAmount);
if (t < diff) {
diff = t;
x = y;
}
}
return 100 - x;
}