Categorías
Algorithms

LeetCode – Combinaciones de factores (Java)

Los números pueden considerarse producto de sus factores. Por ejemplo,

8 = 2 x 2 x 2;
  = 2 x 4.

Escribe una función que tome un número entero n y devuelva todas las combinaciones posibles de sus factores.

Nota:
Puede suponer que n siempre es positivo.
Los factores deben ser mayores que 1 y menores que n.

Solución Java

public List<List<Integer>> getFactors(int n) {
    List<List<Integer>> result = new ArrayList<List<Integer>>();
    List<Integer> list = new ArrayList<Integer>();
    helper(2, 1, n, result, list);
    return result;
}
 
public void helper(int start, int product, int n, List<List<Integer>> result, List<Integer> curr){
    if(start>n || product > n )
        return ;
 
    if(product==n) {
        ArrayList<Integer> t = new ArrayList<Integer>(curr);
        result.add(t);
        return;
    }   
 
    for(int i=start; i<n; i++){
        if(i*product>n)
            break;
 
        if(n%i==0){
            curr.add(i);
            helper(i, i*product, n, result, curr);
            curr.remove(curr.size()-1);
        }
    }
}

  LeetCode - Subsecuencia de ventana mínima (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *