周五了,来题简单题安慰下各位社畜。
1、来康题
今天的题无愧于简单难度!
题目简洁明了,每一个字都可以看懂!
2、审题
审个鸡儿!
根本没有审题的必要!
今天的题就是简单的算数!没有任何陷阱!
相信在座的各位上小学时都做个类似的题目,不过当时还有找老板借个空瓶从而凑一次兑换的骚操作。
如果我是老板,我借个鸡儿!打死都不借!
于是就有了今天的题。
3、思路
过!
4、撸代码
第一种解法,基于除法运算
class Solution {
public int numWaterBottles(int numBottles, int numExchange) {
int drink = numBottles;
int empty = numBottles;
while (empty >= numExchange) {
//可兑换数量
int exchange = empty / numExchange;
//喝掉的数量
drink += exchange;
//空瓶数量 = 空瓶数量 - 兑换消耗的数量 + 重新喝道的数量
empty -= exchange * numExchange - exchange;
}
return drink;
}
}
第二种解法,基于减法
class Solution {
public int numWaterBottles(int numBottles, int numExchange) {
int drink = numBottles;
int empty = numBottles;
while (empty >= numExchange) {
empty -= numExchange;
//喝掉的数量
++drink;
++empty;
}
return drink;
}
}
5、解读
应该没有看不懂的吧……
过!
6、提交
┓( ´∀` )┏
7、咀嚼
想了下时间复杂度,发现不会算……
这里就看下官方的分析吧
8、他人的智慧
虽然我的解法很好想,也很好实现,突出了一个朴素。
这里来看下大佬们不朴素的数学解法。
用上数学的话,就可以轻松地时间空间双O(1)了。
拜读拜读
9、总结
力扣怜悯社畜,于是给周五安排了轻松的题目。
社畜临表涕零,十分感动。
然后提桶跑路。
明天开始就是周末了,社畜们又熬过了一周!
开森!