题目:
题解一:
模拟过程,每三个瓶子兑换一瓶水,如果最后手上还剩两个瓶子,可以向老板借一个瓶子凑成三个瓶子兑换一瓶水然后将瓶子在还给老板。
public int sodaBottle(int n) {
if (n < 2) {
return 0;
}
int count = 0;
int sodaBottleCount = n;
while (sodaBottleCount / 3 > 0) {
int conversionCount = sodaBottleCount / 3;
sodaBottleCount = sodaBottleCount % 3 + conversionCount;
count += conversionCount;
}
// 手上还剩两个瓶子,向老板借一个瓶,兑换后再还给老板
if (sodaBottleCount == 2) {
count++;
}
return count;
}
题解二:
什么情况下需要向老板借瓶子?当有两个瓶子的时候可以向老板借一个瓶子,这样兑换完之后再还给老板,如果小张是一个脸皮非常厚的人,他每两个瓶子向老板借一个瓶子,这样相当于每两个瓶子可以喝一瓶汽水,所以小张能喝到汽水的瓶数是: n/2。
publi int sodaBottle(int n) {
return n/2;
}