Skip to content

1739. Building Boxes

Description

You have a cubic storeroom where the width, length, and height of the room are all equal to n units. You are asked to place n boxes in this room where each box is a cube of unit side length. There are however some rules to placing the boxes:

  • You can place the boxes anywhere on the floor.
  • If box x is placed on top of the box y, then each side of the four vertical sides of the box y must either be adjacent to another box or to a wall.

Given an integer n, return the minimum possible number of boxes touching the floor.

 

Example 1:

Input: n = 3
Output: 3
Explanation: The figure above is for the placement of the three boxes.
These boxes are placed in the corner of the room, where the corner is on the left side.

Example 2:

Input: n = 4
Output: 3
Explanation: The figure above is for the placement of the four boxes.
These boxes are placed in the corner of the room, where the corner is on the left side.

Example 3:

Input: n = 10
Output: 6
Explanation: The figure above is for the placement of the ten boxes.
These boxes are placed in the corner of the room, where the corner is on the back side.

 

Constraints:

  • 1 <= n <= 109

 

Solutions

Solution: Math

  • Time complexity: O(n1/2)
  • Space complexity: O(1)

 

JavaScript

js
/**
 * @param {number} n
 * @return {number}
 */
const minimumBoxes = function (n) {
  let boxes = 0;
  let level = 0;
  let currentLevelBoxes = 0;

  while (boxes < n) {
    level += 1;
    currentLevelBoxes += level;
    boxes += currentLevelBoxes;
  }

  if (boxes === n) return currentLevelBoxes;

  boxes -= currentLevelBoxes;
  currentLevelBoxes -= level;
  level = 0;

  while (boxes < n) {
    level += 1;
    boxes += level;
  }

  return currentLevelBoxes + level;
};

Released under the MIT license