LeetCode. 2806. 取整购买后的账户余额

67 阅读1分钟

题目

一开始,你的银行账户里有 100 块钱。

给你一个整数purchaseAmount ,它表示你在一次购买中愿意支出的金额。

在一个商店里,你进行一次购买,实际支出的金额会向 最近 的 10 的 倍数 取整。换句话说,你实际会支付一个 非负 金额 roundedAmount ,满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值 最小 。

如果存在多于一个最接近的 10 的倍数,较大的倍数 是你的实际支出金额。

请你返回一个整数,表示你在愿意支出金额为 **purchaseAmount **块钱的前提下,购买之后剩下的余额。

注意:  0 也是 10 的倍数。

思路

这个题的难点感觉是题目不容易读懂, 关键语句是 abs(roundedAmount - purchaseAmount) 的值 最小 

其实就是相当于四舍五入了,读明白题意之后,直接模拟就可以 -> 根据个位数与5 的大小进行判断,如果 >= 5 就+1 ; < 5 就 -1

代码

class Solution {
    public int accountBalanceAfterPurchase(int purchaseAmount) {
        int roundedAmount = 0;
            if (purchaseAmount % 10 >= 5) {
                roundedAmount = (purchaseAmount / 10 + 1) * 10;
            }  else{
                roundedAmount = purchaseAmount / 10 * 10;
            }
        return 100 - roundedAmount;
    }
}

题解

灵神题解 leetcode.cn/problems/ac…