容量翻倍,十六次 append 一共搬了多少

👁️ 0 人浏览 💬 0 人评论 ❤️ 添加收藏

从容量 1 开始,满了就翻倍。做 16 次 append,一共搬动了多少个元素?

N = 16

def moves(n, grow):
    """模拟 n 次 append。返回 (一共搬了多少个元素, 单次最多搬几个)"""
    cap, size, total, worst = 1, 0, 0, 0
    for _ in range(n):
        if size == cap:
            total += size
            worst = max(worst, size)
            cap = grow(cap)
        size += 1
    return total, worst

total, worst = moves(N, lambda c: c * 2)
print(total)
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论