Maximum Number of Balls in a Box

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.

Example:

Input: lowLimit = 1, highLimit = 10
Output: 2
Explanation:
Box Number:  1 2 3 4 5 6 7 8 9 10 11 ...
Ball Count:  2 1 1 1 1 1 1 1 1 0  0  ...
Box 1 has the most number of balls with 2 balls.

Approach:

C++

#include <bits/stdc++.h>
using namespace std;

int digitSum(int n)
{
    int sum = 0;
    while (n > 0)
    {
        int temp = n % 10;
        sum += temp;
        n = n / 10;
    }
    return sum;
}
int countBalls(int lowLimitint highLimit)
{

    map<intintmp;
    for (int i = lowLimiti <= highLimiti++)
    {
        int sum = digitSum(i);

        mp[sum]++;
    }
    int ans = 0;
    for (auto it = mp.begin(); it != mp.end(); it++)
    {
        ans = max(ansit->second);
    }
    return ans;
}

int main()
{
    int lowLimit = 1highLimit = 10;

    cout << countBalls(lowLimithighLimit);

    return 0;
}


No comments:

Post a Comment