Every day a Leetcode
题目来源:2806. 取整购买后的账户余额
解法1:数学
题目要求为将 purchaseAmount 四舍五入到最近的 10 的倍数作为 roundedAmount,计算 100−roundedAmount 的值并返回。
分类讨论即可。
代码:
/*
* @lc app=leetcode.cn id=2806 lang=cpp
*
* [2806] 取整购买后的账户余额
*/
// @lc code=start
class Solution
{
public:
int accountBalanceAfterPurchase(int purchaseAmount)
{
int roundedAmount;
if (purchaseAmount % 10 < 5)
roundedAmount = purchaseAmount - purchaseAmount % 10;
else if (purchaseAmount % 10 > 5)
roundedAmount = purchaseAmount + 10 - purchaseAmount % 10;
else
roundedAmount = purchaseAmount + 5;
return 100 - roundedAmount;
}
};
// @lc code=end
one-line code:
// one-line code
class Solution
{
public:
int accountBalanceAfterPurchase(int purchaseAmount)
{
return 100 - (purchaseAmount + 5) / 10 * 10;
}
};
结果:

复杂度分析:
时间复杂度:O(1)。
空间复杂度:O(1)。
该文章介绍了如何解决LeetCode题目2806,即计算在将purchaseAmount四舍五入到最接近的10的倍数后,账户余额的变化。提供了两种方法,一种是分类讨论,另一种是一行代码实现,时间复杂度和空间复杂度均为O(1)。

127

被折叠的 条评论
为什么被折叠?



