1. 程式人生 > 其它 >eclipse gradle java 打包_Java 構建入門

eclipse gradle java 打包_Java 構建入門

技術標籤: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;//最底層的數量 } };