查找最大大小以截断日志以将它们完全存储在 Python 中的数据库中的程序
假设我们有一个称为日志的数字列表和另一个值限制。logs[i]中的每个元素表示第i个用户生成的日志的大小。限制代表我们可以存储在数据库中的日志总大小。我们必须找到最大的x,如果我们将日志中的每个日志截断为最大大小x,并且左日志大小的总和最多为limit。如果不需要截断日志,则只需返回最大的日志大小。
所以,如果输入像logs=[500,200,10000,500,4000]limit=3000,那么输出就会是900,因为我们把logstruncateto900,那么我们可以得到[500,200,900,500,900]现在总和是3000
示例
让我们看看以下实现以获得更好的理解-
def solve(logs, limit): lo, hi = 0, max(logs) + 1 while lo + 1 < hi: mi = lo + (hi - lo) //2 if sum(min(mi, log) for log in logs) <= limit: lo = mi else: hi = mi return lo logs = [500, 200, 10000, 500, 4000] limit = 3000 print(solve(logs, limit))
输入
[500, 200, 10000, 500, 4000], 3000输出结果
900