Oferta de Sword Finger: 49. Números feos: análisis y código (Java)

Sword hace referencia a la oferta 49. Código y análisis de números feos [Java]

1. Título

Los números que solo contienen los factores primos 2, 3 y 5 se denominan números feos. Por ejemplo, 6 y 8 son números desagradables, pero 14 no lo es porque contiene el factor primo 7. Tradicionalmente, consideramos al 1 como el primer número desagradable. Encuentra el enésimo número feo en orden ascendente.

Dos, análisis y código

1. Marque la posición + resuelva por turno

(1) Pensando

Dado que los números desagradables solo contienen los factores primos 2, 3 y 5, los números desagradables se pueden obtener multiplicando estos tres factores en orden ascendente.
En el proceso de cálculo, el siguiente número feo proviene de un número feo generado multiplicado por 2, 3 o 5, y la matriz de números feos generada se ordena. Puede diseñar 3 marcas para registrar el tiempo más reciente y cada factor respectivamente Multiplica la posición de los datos utilizados para generar el número feo requerido, evitando así operaciones repetidas.

(2) Código

import java.util.*;
public class Solution {
    
    
    public int GetUglyNumber_Solution(int index) {
    
    
        if (index <= 0)
            return 0;
        ArrayList<Integer> uglyNums = new ArrayList<>();
        uglyNums.add(1);
        
        int i2 = 0, i3 = 0, i5 = 0;
        int num2 = uglyNums.get(i2++) * 2;
        int num3 = uglyNums.get(i3++) * 3;
        int num5 = uglyNums.get(i5++) * 5;
        
        for (int i = 1; i < index; i++) {
    
    
            int num = Math.min(num2, Math.min(num3, num5));
            uglyNums.add(num);
            if (num == num2)
                num2 = uglyNums.get(i2++) * 2;
            if (num == num3)
                num3 = uglyNums.get(i3++) * 3;
            if (num == num5)
                num5 = uglyNums.get(i5++) * 5;
        }
        return uglyNums.get(index - 1);
    }
}

(3) Resultados

Duración: 21ms, memoria ocupada: 9532k.

Tres, otro

Nada.

Supongo que te gusta

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