Categorías
Algorithms Interview

LeetCode – Rangos de resumen (Java)

Dada una matriz entera ordenada sin duplicados, devuelve el resumen de sus rangos para números consecutivos.

Por ejemplo, dado [0,1,2,4,5,7], regreso [«0->2″,»4->5″,»7»].

Análisis

Al iterar sobre la matriz, es necesario realizar un seguimiento de dos valores: 1) el primer valor de un nuevo rango y 2) el valor anterior en el rango.

Solución Java

public List<String> summaryRanges(int[] nums) {
    List<String> result = new ArrayList<String>();
 
    if(nums == null || nums.length==0)
        return result;
 
    if(nums.length==1){
        result.add(nums[0]+"");
    }
 
    int pre = nums[0]; // previous element   
    int first = pre; // first element of each range
 
    for(int i=1; i<nums.length; i++){
            if(nums[i]==pre+1){
                if(i==nums.length-1){
                    result.add(first+"->"+nums[i]);
                }
            }else{
                if(first == pre){
                    result.add(first+"");
                }else{
                    result.add(first + "->"+pre);   
                }
 
                if(i==nums.length-1){
                    result.add(nums[i]+"");
                }
 
                first = nums[i];
            }
 
            pre = nums[i];
    }
 
    return result;
}

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 *