1518. 换酒问题
知识点: while, /, %
class Solution:
def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
res = rem = numBottles # 全部喝完,rem 为空瓶数
while rem >= numExchange:
numBottles, rem = divmod(rem, numExchange) # 可换酒 numBottles 瓶,剩余 rem 个空瓶。
res += numBottles # 全部喝完
rem += numBottles # + 空瓶
return res
基础知识
整除
d, r = divmod(a, b) <=> d = a // b, r = a % b
// 整除
/ 除,结果是浮点数。
while 循环
while 条件:
# 循环体
else:
# break 终止循环时不执行
divmod() 内置函数
divmod(a, b) 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
第五课
2057. 值相等的最小索引
class Solution:
def smallestEqual(self, nums: List[int]) -> int:
for i, x in enumerate(nums):
if i % 10 == x: return i
return -1
412. Fizz Buzz
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
res = [''] * 列表包含 n # n 个 空串
# res = []
for i in range(1, n + 1):
if i % 15 == 0: x = "FizzBuzz" # 先处理 15 的倍数
elif i % 3 == 0: x = "Fizz"
elif i % 5 == 0: x = "Buzz"
else: x = str(i) # 转换成字符串
res[i - 1] = x
# res.append(x)
return res
# return ['Fizz'[i%3*4:]+"Buzz"[i%5*4:] or str(i) for i in range(1, n+1)]