eclipse gradle java 打包_Java 構建入門
阿新 • • 發佈:2021-01-30
技術標籤:LeetCode
題目描述:
有一個立方體房間,其長度、寬度和高度都等於 n 個單位。請你在房間裡放置 n 個盒子,每個盒子都是一個單位邊長的立方體。放置規則如下:
你可以把盒子放在地板上的任何地方。
如果盒子 x 需要放置在盒子 y 的頂部,那麼盒子 y 豎直的四個側面都 必須 與另一個盒子或牆相鄰。
給你一個整數 n ,返回接觸地面的盒子的 最少 可能數量。
示例 1:
輸入:n = 3
輸出:3
解釋:上圖是 3 個盒子的擺放位置。
這些盒子放在房間的一角,對應左側位置。
示例 2:
輸入:n = 4
輸出:3
解釋:上圖是 3 個盒子的擺放位置。
這些盒子放在房間的一角,對應左側位置。
示例 3:
輸入:n = 10
輸出:6
解釋:上圖是 10 個盒子的擺放位置。
這些盒子放在房間的一角,對應後方位置。
提示:
1 <= n <= 109
方法1:
主要思路:解題彙總連結
(1)將n進行分割,第一次分割的方式是 0,1,3,6,10,……,i*(i+1)/2,直到n不再滿足分割的數量,可能剩餘的一些;
(2)再分割剩下的,則分割的方式是1,2,3,……,k,直到分割結束;
class Solution {
public:
int minimumBoxes(int n) {
if (n < 4) {
return n;
}
//第一次分割
long index = 1;
long cur = 0;//新的一層的數量
while (cur + index <= n) {
cur += index;
n -= cur;
++index;
}
//第二次分割
index = 0;
while (index < n) {//第二次分割
n-=index;
++index;
}
return index + cur;//最底層的數量
}
};