Back to all solutions

#1954 - Minimum Garden Perimeter to Collect Enough Apples

Problem Description

In a garden represented as an infinite 2D grid, there is an apple tree planted at every integer coordinate. The apple tree planted at an integer coordinate (i, j) has |i| + |j| apples growing on it.

You will buy an axis-aligned square plot of land that is centered at (0, 0).

Given an integer neededApples, return the minimum perimeter of a plot such that at least neededApples apples are inside or on the perimeter of that plot.

The value of |x| is defined as:

  • x if x >= 0
  • -x if x < 0

Solution

/**
 * @param {number} neededApples
 * @return {number}
 */
var minimumPerimeter = function(neededApples) {
  let n = 0;
  let totalApples = 0;

  while (totalApples < neededApples) {
    n++;
    totalApples = 2 * n * (n + 1) * (2 * n + 1);
  }

  return 8 * n;
};