Categorías
Algorithms

LeetCode – Rangos faltantes (Java)

Dada una matriz de números enteros ordenados, donde el rango de elementos está en el rango inclusivo [lower, upper], devuelve los rangos que faltan.

Ejemplo:

Entrada: nums = [0, 1, 3, 50, 75], inferior = 0 y superior = 99,
Producción: [«2», «4->49», «51->74», «76->99»]

Solución Java

public List<String> findMissingRanges(int[] nums, int lower, int upper) {
    List<String> result = new ArrayList<>();
    int start = lower;        
 
    if(lower==Integer.MAX_VALUE){
        return result;
    }
 
    for(int i=0; i<nums.length; i++){
        //handle duplicates, e.g., [1,1,1] lower=1 upper=1
        if(i<nums.length-1 && nums[i]==nums[i+1]){ 
            continue;
        }
 
        if(nums[i] == start){
            start++;
        }else{
            result.add(getRange(start, nums[i]-1));
            if(nums[i]==Integer.MAX_VALUE){
                return result;
            }
            start = nums[i]+1;
        }            
    }
 
    if(start<=upper){
        result.add(getRange(start, upper));
    }
 
    return result;
}
 
private String getRange(int n1, int n2) {
    return n1 == n2 ? String.valueOf(n1) : String.format("%d->%d" , n1, n2);
}

  LeetCode - Puntos máximos en una línea (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 *