LeetCode-1742. Número máximo de bolas en una caja (Número máximo de bolas en una caja) -Análisis y código (Java)

LeetCode-1742. Número máximo de bolas en una caja [Número máximo de bolas en una caja] -Análisis y código [Java]

1. Tema

Trabajas en una fábrica de juguetes que produce bolas pequeñas. Hay n bolas, numeradas de lowLimit a highLimit (incluyendo lowLimit y highLimit, es decir, n == highLimit-lowLimit + 1). También hay un número ilimitado de casillas, numeradas del 1 al infinito.
Su trabajo es poner cada bola en una caja, donde el número de la caja debe ser igual a la suma de cada número en el número de la bola. Por ejemplo, la bola numerada 321 debe colocarse en la casilla numerada 3 + 2 + 1 = 6, y la pelota numerada 10 debe colocarse en la casilla numerada 1 + 0 = 1.
Te da dos números enteros, lowLimit y highLimit, y devuelve el número de bolas en la casilla con más bolas. Si hay varias casillas que satisfacen el número máximo de bolas, simplemente devuelva la cantidad de bolas en cualquiera de las casillas.

Ejemplo 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 。

Ejemplo 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 。

Ejemplo 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 。

inmediato:

  • 1 <= límite bajo <= límite alto <= 105

Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/maximum-number-of-balls-in-a-box Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos, análisis y código

1. Agregue uno por uno

(1) Pensando

Pon las bolas en la caja una por una y juzga.

(2) Código

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) Resultados

Tiempo de ejecución: 24 ms, superando al 93,49% de los usuarios
en todas las presentaciones de Java ; consumo de memoria: 35,4 MB, superando al 72,49% de los usuarios en todas las presentaciones de Java.

Tres, otro

Nada.

Supongo que te gusta

Origin blog.csdn.net/zml66666/article/details/113804577
Recomendado
Clasificación