es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Organice la matriz de manera que los elementos adyacentes tengan menos espacio, lo que resulte en la suma mínima.

Tengo una matriz de números con un tamaño par, aquí está mi tarea:

a) Descartar cualquier par de elementos de la matriz.
b) Luego, emparejar los elementos y calcular la suma de las diferencias entre los elementos del par de tal manera que la suma sea mínima.

Ejemplo:

Tamaño de la matriz es par, digamos 8.
Elementos de la matriz: 1,3,4,6,3,4,100,200

Respuesta:
5

Explicación:

Aquí eliminaré 100 y 200, ya que al emparejarlos me da una diferencia de (200 – 100) = 100.
Por lo tanto, los elementos restantes son [1,3,4,6,3,4]
Los pares con la suma mínima son: (1 3), (4 3), (6 4).
= |3-1| = 2, |4-3|=1,|6-4| = 2. Por lo tanto, la suma es 2 + 1 + 2 = 5

Ejemplo:

Tamaño de la matriz es par, digamos 4.
Elementos de la matriz: 1,50,51,60

Respuesta:
1

Explicación: Aquí eliminaré 1 y 60, así obtendré la suma mínima.
Por lo tanto, los elementos restantes son [50,51], iguales a sus adyacentes [50 51] = 1. Mi código fallará para este caso y devolverá 49.

¿Cómo lograr esto en java?

Intenté ordenar los elementos de esta manera, pero este no es el enfoque correcto para todo tipo de entradas.

public static int process(int[] a) {
int n = a.length;
int n1 = n/2-1;
Arrays.sort(arr);
int sum = 0;
for(int i=0; i<n12; i+=2) {
sum += a[i+1] – a[i];
}
return sum;
} i+=”2)” {=”” sum=”” +=”a[i+1]” -=”” a[i];=”” }=”” return=”” sum;=””></n1
2; i+=2) {
sum += a[i+1] – a[i];
}
return sum;
}>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr la tarea de descartar dos elementos de un arreglo de tamaño par, emparejar los elementos restantes y calcular la suma de las diferencias entre los elementos del par de manera que la suma sea mínima en Java, podemos usar el siguiente enfoque:

    1. Primero, ordena el arreglo dado en orden ascendente.
    2. Elimina el primer y último elemento del arreglo.
    3. Empareja los elementos del arreglo restante y calcula la diferencia absoluta entre los pares mientras se realiza un seguimiento de la suma de las diferencias.
    4. Retorna la suma.

    Aquí está el código en Java para lo mismo:

    public static int process(int[] array) {
        int length = array.length;
        int n = length / 2 - 1;
        Arrays.sort(array);
        int sum = 0;
        for (int i = 0; i < n * 2; i += 2) {
            sum += array[i + 1] - array[i];
        }
        return sum;
    }
    

    Este enfoque tiene una complejidad temporal de O(n log n) debido a la ordenación del arreglo. Sin embargo, es un enfoque razonable para arreglos de tamaño pequeño.

Comments are closed.