• 1739. 放置盒子 贪心


    1739. 放置盒子

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

    • 你可以把盒子放在地板上的任何地方。
    • 如果盒子 x 需要放置在盒子 y 的顶部,那么盒子 y 竖直的四个侧面都 必须 与另一个盒子或墙相邻。

    给你一个整数 n ,返回接触地面的盒子的 最少 可能数量

    示例 1:

    输入:n = 3
    输出:3
    解释:上图是 3 个盒子的摆放位置。
    这些盒子放在房间的一角,对应左侧位置。
    

    示例 2:

    输入:n = 4
    输出:3
    解释:上图是 3 个盒子的摆放位置。
    这些盒子放在房间的一角,对应左侧位置。
    

    示例 3:

    输入:n = 10
    输出:6
    解释:上图是 10 个盒子的摆放位置。
    这些盒子放在房间的一角,对应后方位置。

    提示:

    • 1 <= n <= 1e9

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/building-boxes
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    做题结果

    失败,多余的块不知道怎么放(不会画图,应该用软件的,草率了)

     方法:贪心

    1. 刚刚好的情况,是前缀和的前缀和

    2. 有多余块的情况,又是 1到x的排列消耗,每次多占用一格(斜着往前放一排)

    1. class Solution {
    2. public int minimumBoxes(int n) {
    3. if(n<=1) return n;
    4. int v = 1;
    5. int pre = 1;
    6. for(int i=2; i <= 1000000; i++){
    7. v+=i;
    8. if(v+pre>=n){
    9. if(v+pre == n) return v;
    10. n-=pre;
    11. v-=i;
    12. break;
    13. }
    14. pre +=v;
    15. }
    16. for(int i = 1; n>0; i++){
    17. n-=i;
    18. ++v;
    19. }
    20. return v;
    21. }
    22. }

  • 相关阅读:
    机器学习(十六)推荐系统
    RK3399应用开发 | RK3399本地编译glmark2
    Go语言Gin框架前后端分离项目开发工程化实例
    SQL注入:原理及示例
    全局光照RSM
    Vue高级篇--实现前后端分离
    PHP 约瑟夫环问题
    手机建模教程 | 如何从易模App中导出模型?有哪些格式?含贴图吗?
    [Java] [Spring boot] Mybatis generator 生成Mapper.xml无效的问题
    5G双域专网解决方案浅析
  • 原文地址:https://blog.csdn.net/yu_duan_hun/article/details/126562761