流行网站开发框架,家装e站,wordpress文章页横幅,免费 网站 手机文章目录1. 题目2. 解题1. 题目
有一个立方体房间#xff0c;其长度、宽度和高度都等于 n 个单位。 请你在房间里放置 n 个盒子#xff0c;每个盒子都是一个单位边长的立方体。放置规则如下#xff1a;
你可以把盒子放在地板上的任何地方。如果盒子 x 需要放置在盒子 y 的…
文章目录1. 题目2. 解题1. 题目
有一个立方体房间其长度、宽度和高度都等于 n 个单位。 请你在房间里放置 n 个盒子每个盒子都是一个单位边长的立方体。放置规则如下
你可以把盒子放在地板上的任何地方。如果盒子 x 需要放置在盒子 y 的顶部那么盒子 y 竖直的四个侧面都 必须 与另一个盒子或墙相邻。
给你一个整数 n 返回接触地面的盒子的 最少 可能数量。
示例 1
输入n 3
输出3
解释上图是 3 个盒子的摆放位置。
这些盒子放在房间的一角对应左侧位置。示例 2
输入n 4
输出3
解释上图是 3 个盒子的摆放位置。
这些盒子放在房间的一角对应左侧位置。示例 3
输入n 10
输出6
解释上图是 10 个盒子的摆放位置。
这些盒子放在房间的一角对应后方位置。提示
1 n 10^9来源力扣LeetCode 链接https://leetcode-cn.com/problems/building-boxes 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
根据题意靠着墙角是最好的方法先假设这个完整的斜坡能摆满多少层能超过 n然后多余出来的第一次增加一个底部的可以摆 1 个第二次增加一个底部的可以增加 2 个积木依次类推
class Solution {
public:int minimumBoxes(int n) {int ct 1, layer 1;while(ct n){layer;ct layer*(layer1)/2;//每一层的个数}if(ct n) return layer*(layer1)/2;ct - layer*(layer1)/2;int left n-ct;//多出来的layer--;int bottom layer*(layer1)/2, delta 1;while(left0){bottom;//每放下一个底部积木left - delta;//可以依次增加放置积木1,2,3,4。。。个}return bottom;}
};0 ms 5.9 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步