25 – 09 – 30 (补于 25 – 10 – 06)
今日份题面
超市正在促销,你可以用
numExchange
个空水瓶从超市兑换一瓶水。最开始,你一共购入了numBottles
瓶水。如果喝掉了水瓶中的水,那么水瓶就会变成空的。
给你两个整数
numBottles
和numExchange
,返回你 最多 可以喝到多少瓶水。
我能借一个吗(
模拟就行
class Solution {
public int numWaterBottles(int numBottles, int numExchange) {
int res = 0;
while(numBottles >= numExchange){
res += numBottles / numExchange * numExchange;
numBottles = numBottles / numExchange + numBottles % numExchange;
}
res += numBottles;
return res;
}
}
或者组合数学推导一下
class Solution {
public int numWaterBottles(int numBottles, int numExchange) {
return numBottles + (numBottles - 1) / (numExchange - 1);
}
}
25 – 10 – 01 (补于 25 – 10 – 07)
今日份题面
给你两个整数
numBottles
和numExchange
。
numBottles
代表你最初拥有的满水瓶数量。在一次操作中,你可以执行以下操作之一:
- 喝掉任意数量的满水瓶,使它们变成空水瓶。
- 用
numExchange
个空水瓶交换一个满水瓶。然后,将numExchange
的值增加 1 。注意,你不能使用相同的
numExchange
值交换多批空水瓶。例如,如果numBottles == 3
并且numExchange == 1
,则不能用3
个空水瓶交换成3
个满水瓶。返回你 最多 可以喝到多少瓶水。
其实和昨天的差不多,模拟就行,注意每次换水后要求数 +1
class Solution {
public int maxBottlesDrunk(int numBottles, int numExchange) {
int res = numBottles;
while(numBottles >= numExchange){
numBottles -= numExchange;
++res;
++numBottles;
++numExchange;
}
return res;
}
}
发表回复