---
# System prepended metadata

title: '1742. 盒子中小球的最大數量 [easy][hashmap]'

---

 # 1742. 盒子中小球的最大數量 [easy][hashmap]
 你在一家生產小球的玩具廠工作，有 n 個小球，編號從 lowLimit 開始，到 highLimit 結束（包括 lowLimit 和 highLimit ，即 n == highLimit - lowLimit + 1）。另有無限數量的盒子，編號從 1 到 infinity 。

你的工作是將每個小球放入盒子中，其中盒子的編號應當等於小球編號上每位數字的和。例如，編號 321 的小球應當放入編號 3 + 2 + 1 = 6 的盒子，而編號 10 的小球應當放入編號 1 + 0 = 1 的盒子。

給你兩個整數 lowLimit 和 highLimit ，返回放有最多小球的盒子中的小球數量。如果有多個盒子都滿足放有最多小球，只需返回其中任一盒子的小球數量。

示例 1：

```
输入：lowLimit = 1, highLimit = 10
输出：2
解释：
盒子编号：1 2 3 4 5 6 7 8 9 10 11 ...
小球数量：2 1 1 1 1 1 1 1 1 0  0  ...
编号 1 的盒子放有最多小球，小球数量为 2 。
```
示例 2：

```
输入：lowLimit = 5, highLimit = 15
输出：2
解释：
盒子编号：1 2 3 4 5 6 7 8 9 10 11 ...
小球数量：1 1 1 1 2 2 1 1 1 0  0  ...
编号 5 和 6 的盒子放有最多小球，每个盒子中的小球数量都是 2 。
```
示例 3：

```
输入：lowLimit = 19, highLimit = 28
输出：2
解释：
盒子编号：1 2 3 4 5 6 7 8 9 10 11 12 ...
小球数量：0 1 1 1 1 1 1 1 1 2  0  0  ...
编号 10 的盒子放有最多小球，小球数量为 2 。
```

題解思路：
從lowLimt到highLimit結束，對每個數字的位數進行加和操作，總合即是對應的盒子編號，該盒子編號的小球數量+1即可。
將所有數字都計算過後，再遍歷所有盒子，找出最大盒子中球的數量的編號，返回即可。

```java=
class Solution {
    public int countBalls(int lowLimit, int highLimit) {
        int[] cnt = new int[50];
        int res = 0;
        for(int i=lowLimit;i<=highLimit;i++){
            int num = i, cur = 0;
            while(num !=0){
                cur += num %10;
                num /=10;
            }
            ++cnt[cur];
        }
        for(int r:cnt){
            res = Math.max(r, res);
        }
        return res;
    }

}

```

