python - 为什么这段代码在codingbat上给出错误“超时”?
问题描述
场景:我们想要制作一包“目标”公斤的巧克力。我们有小条(每条 1 公斤)和大条(每条 5 公斤)。返回要使用的小柱的数量,假设我们总是在小柱之前使用大柱。如果无法完成,则返回 -1。
是否有某些情况导致它在无限循环中运行?
def make_chocolate(small, big, goal):
while goal >= 5 and big > 0:
goal -= 5
big -= 1
if small >= goal:
return goal
return -1
解决方案
我建议你使用更多的算术来解决这个问题
def make_chocolate(small, big, goal):
big_that_can_fit = goal // 5
big_that_we_use = min(big_that_can_fit, big)
goal -= big_that_we_use * 5
if small >= goal:
return goal
return -1
推荐阅读
- python - 如何将计算出的角度(矢量)转换为表示该角度的单个数字?
- jackson - 无法从 START_OBJECT 令牌中反序列化 MyEnum 的实例
- python - OpenCV:如何仅在视频文件的第一帧上绘制,然后继续显示整个视频
- c++ - 关于操作符重载、类型转换和 int 提升的 C++ 编译错误
- javascript - 是否可以将样式更改应用于对象的特定值?
- mysql - 如何通过 spring 更新我的 MySQL 连接以处理 TLSv1.2?
- api - USPS API 未返回承诺日期
- javascript - LocalStorage 没有通过数字 9
- laravel - 我如何检索属于关系的值
- javascript - 如何获取用户数组只尝试了一切