Cómo calcular la diferencia absoluta entre pares de números utilizando un HashMap?

Nasko Apostolov:

Busco para convertir una matriz de enteros en pares de valores clave, donde cada elemento es un valor del elemento precedente y una clave para el elemento posterior con la excepción de los primeros y últimos elementos.

Una vez que tengo la matriz convertida en un HashMap, tengo que calcular la diferencia entre números enteros de la matriz. Soy capaz de convertir la matriz, pero estoy buscando una solución más elegante y todavía tengo que encontrar el hueco.

public void calculateGap(int[] nums) {
    int l = nums.length;
    Map<Integer, Integer> dist = new HashMap<>();

    for(int i=0; i<l; i++) {
        if(i != l-1) {
            int val = nums[i+1];
            dist.put(nums[i], val);    
        }
        if(i != 0) {
            int key = nums[i-1];
            dist.put(key, nums[i]);
        }
    }
}

Entrada: [3, 6, 9, 1]

De entrada como un HashMap: {3: 6, 6: 9, 9: 1}

Salida: [3, 3, 8]

güriösä:

Q: Me pregunto qué el desvío HashMap es para, cuando uno puede calcular la distancia de inmediato.

public int[] calculateGap(int[] nums) {
    if (nums.length < 2) {
        throw new IllegalArgumentException();
    }

    int[] dist = new int[nums.length - 1];
    for (int i = 1; i < nums.length; i++) {
        dist[i - 1] = Math.abs(nums[i] - nums[i - 1]);
    }
    return dist;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=331283&siteId=1
Recomendado
Clasificación