1739. 放置盒子

2021/02/23 leetcode 共 460 字,约 2 分钟

title

problem link

有一个立方体房间,其长度、宽度和高度都等于 n 个单位。请你在房间里放置 n 个盒子,每个盒子都是一个单位边长的立方体。放置规则如下:

你可以把盒子放在地板上的任何地方。 如果盒子 x 需要放置在盒子 y 的顶部,那么盒子 y 竖直的四个侧面都 必须 与另一个盒子或墙相邻。 给你一个整数 n ,返回接触地面的盒子的 最少 可能数量。

solution

class Solution:
    def minimumBoxes(self, n: int) -> int:
        s = 1
        k = 1
        while s <= n:
            k += 1
            s += (k * (k + 1)) // 2
        s -= (k * (k + 1)) // 2
        k -= 1
        # 此时满足s < n and k是s<n的最大k了,按照最满放的
        ans = (k * (k + 1)) // 2 # 此时下面方块数量

        # 随着下面每多放i个,上面也可以多放0-i个。  第一次只能放一个,上面放不了,第二次下面放1个,上面也可以放1个,第三次下面放一个,上面2层各放1个
        k = 1
        while s < n:
            s += k
            k += 1
            ans += 1
            # print(ans)
        return ans

Search

    Table of Contents