LeetCode-1742。ボックス内のボールの最大数[ボックス内のボールの最大数]-分析とコード[Java]
1.トピック
あなたは小さなボールを生産するおもちゃの工場で働いています。lowLimitからhighLimitまで番号が付けられたn個のボールがあります(lowLimitとhighLimitを含む、つまりn == highLimit-lowLimit + 1)。1から無限まで番号が付けられた無制限の数のボックスもあります。
あなたの仕事は、各ボールをボックスに入れることです。ボックス番号は、ボール番号の各番号の合計と等しくなければなりません。たとえば、番号321のボールは番号3 + 2 + 1 = 6のボックスに配置し、番号10のボールは番号1 + 0 = 1のボックスに配置する必要があります。
lowLimitとhighLimitの2つの整数を指定し、ボールが最も多いボックス内のボールの数を返します。ボールの最大数を満たすボックスが複数ある場合は、いずれかのボックスのボールの数を返すだけです。
例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 。
促す:
- 1 <= lowLimit <= highLimit <= 105
出典:LeetCode(LeetCode)
リンク:https://leetcode-cn.com/problems/maximum-number-of-balls-in-a-box
著作権はLeetCodeが所有しています。商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。
2、分析とコード
1.1つずつ追加します
(1)考える
ボールを1つずつ箱に入れて判断します。
(2)コード
class Solution {
public int countBalls(int lowLimit, int highLimit) {
int lenMax = 46;
int [] box = new int[lenMax];
Arrays.fill(box, 0);
for (int i = lowLimit; i <= highLimit; i++) {
int s = 0;
for (int num = i; num > 0; num /= 10)
s += num % 10;
box[s]++;
}
int ans = 0;
for (int i = 0; i < lenMax; i++)
ans = Math.max(ans, box[i]);
return ans;
}
}
(3)結果
実行時間:24ミリ秒、
すべてのJava送信でユーザーの93.49%を上回っています。メモリ消費量:35.4 MB、すべてのJava送信でユーザーの72.49%を上回っています。
3、その他
何もありません。