Back to all solutions
#1742 - Maximum Number of Balls in a Box
Problem Description
You are working in a ball factory where you have n balls numbered from lowLimit up to highLimit inclusive (i.e., n == highLimit - lowLimit + 1), and an infinite number of boxes numbered from 1 to infinity.
Your job at this factory is to put each ball in the box with a number equal to the sum of digits of the ball's number. For example, the ball number 321 will be put in the box number 3 + 2 + 1 = 6 and the ball number 10 will be put in the box number 1 + 0 = 1.
Given two integers lowLimit and highLimit, return the number of balls in the box with the most balls.
Solution
/**
* @param {number} lowLimit
* @param {number} highLimit
* @return {number}
*/
var countBalls = function(lowLimit, highLimit) {
const boxCounts = new Map();
let result = 0;
for (let ball = lowLimit; ball <= highLimit; ball++) {
const box = sumDigits(ball);
const count = (boxCounts.get(box) || 0) + 1;
boxCounts.set(box, count);
result = Math.max(result, count);
}
return result;
function sumDigits(num) {
let sum = 0;
while (num > 0) {
sum += num % 10;
num = Math.floor(num / 10);
}
return sum;
}
};