【LeetCode - 每日1题】换水问题1
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵目录🌵
- 难度 ⭐⭐
- 题目回顾
- ✅解题思路
-
- 💖概述
- 💓核心思路
- ✅代码分析
- ✅ 复杂度分析
- ✅ 测试用例验证
-
- ✅ 示例1
- ✅ 示例2
- ✅ 边缘用例
- 💖总结
- 🤝 期待与你共同进步
- 📚 参考文档
难度 ⭐⭐
题目回顾
超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。
如果喝掉了水瓶中的水,那么水瓶就会变成空的。
给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到多少瓶水。示例 1:
输入:numBottles = 9, numExchange = 3
输出:13
解释:你可以用 3 个空瓶兑换 1 瓶水。
所以最多能喝到 9 + 3 + 1 = 13 瓶水。示例 2:
输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空瓶兑换 1 瓶水。
所以最多能喝到 15 + 3 + 1 = 19 瓶水。
提示:
- 1 <= numBottles <= 100
- 2 <= numExchange <= 100
✅解题思路
💖概述
题目要求计算通过不断兑换空水瓶最多能喝到的水瓶数。初始时喝掉所有购买的水,得到空瓶。然后用空瓶兑换新水,喝掉后再得空瓶,继续兑换,直到空瓶不足以兑换为止。
💓核心思路
- 初始状态:喝掉所有购买的水,记录喝到的水瓶数,并得到等量的空瓶。
- 循环兑换:只要空瓶数≥兑换比例numExchange,就不断兑换:
- 计算当前可兑换的水瓶数(整除)。
- 喝掉兑换的水,累加到总水瓶数。
- 更新空瓶数:剩余空瓶(取模) + 新喝掉产生的空瓶。
- 终止条件:空瓶不足以兑换时结束循环,返回总水瓶数。
✅代码实现
class Solution: