Minimum Number of Operations to Move All Balls to Each Box

MediumArrayStringPrefix Sum

Solution

export function minOperations(boxes: string): number[] {
  const n = boxes.length;
 
  let leftBallCount = parseInt(boxes[0]);
  const leftDistances = new Array(n).fill(0);
 
  let rightBallCount = parseInt(boxes[n - 1]);
  const rightDistances = new Array(n).fill(0);
  for (let i = 1; i < n; i++) {
    leftDistances[i] = leftDistances[i - 1] + leftBallCount;
    leftBallCount += parseInt(boxes[i]);
 
    rightDistances[n - i - 1] = rightDistances[n - i] + rightBallCount;
    rightBallCount += parseInt(boxes[n - i - 1]);
  }
 
  return Array.from({ length: n }, (_, i) => leftDistances[i] + rightDistances[i]);
}