题目
类型:数学
解题思路
起始有 n 瓶酒,使用 m 个空酒瓶能够换得一瓶新酒(饮用数量加一,且新瓶子数量加一)。
对于每次交换而言,会损失掉 m−1 个瓶子。
利用每个回合损失的瓶子个数 m−1 为定值,可直接算出最大交换次数(额外饮用次数),加上起始酒的个数即是答案。
注意边界条件:当 n 为 m−1 的倍数时,最后一个回合不满足兑换条件。
代码
class Solution {
public int numWaterBottles(int n, int m) {
int cnt = n / (m - 1);
return n % (m - 1) == 0 ? n + cnt - 1 : n + cnt;
}
}