Imprima (en orden descendente) la aparición del número en una matriz 2D [cerrado]

Cerrado. Esta pregunta está fuera de tema. Actualmente no está aceptando respuestas.
Respuesta 1

Una forma de hacerlo (suponiendo que se le permita usar la ordenación incorporada y que cada una de las matrices de su matriz tenga la misma longitud) es en unos pocos pasos:

  1. Tome todas las matrices de su matriz 2D proporcionadas como entrada y complete una matriz 1D con todos los valores que contiene.
  2. Ordenar la matriz 1D. Esto garantiza que, al iterar, el número de veces que se repite un número es el número de veces que ocurre en la totalidad de la matriz 2D.
  3. Itere a través de la matriz 1D y obtenga el número de valores únicos. Use esto como el tamaño de la primera dimensión de la matriz que se devolverá; la segunda dimensión siempre será 2 (valor, frecuencia)
  4. Itere a través de la matriz 1D, contando cuántas veces aparece un valor dado en sucesión. Agregue el valor y la cantidad de veces que esto aparece en la matriz de ocurrencias.

Aquí está el código:

private static int[][] getOccurrenceArray(int[][] input)
{
    // create a new 1D array that we'll shove
    // all indices of the 2D array into
    int[] inputCopy = new int[input.length * input[0].length];
    int index = 0;
    for (int i = 0; i < input.length; i++) {
        for (int j = 0; j < input[0].length; j++) {
            inputCopy[index] = input[i][j];
            index++;
        }
    }

    Arrays.sort(inputCopy);

    // find the number of unique values in the 1D array - this will be the length of 
    //the first dimension of your frequency array
    int uniqueValues = 1;
    int previouslySeen = inputCopy[0];
    for (int i = 1; i < inputCopy.length; i++) {
        // if value at the current index isn't the same as the value
        // at the previous index, we've found a new unique value
        if (inputCopy[i] != previouslySeen) {
            uniqueValues++;
        } 

        previouslySeen = inputCopy[i];
    }

    // create the frequency array
    int[][] frequencyArray = new int[uniqueValues][2];
    previouslySeen = inputCopy[0];
    int frequency = 0;
    index = 0;
    for (int i = 0; i < inputCopy.length; i++) {
        // if we haven't reached a new value, increment the frequency
        if (inputCopy[i] == previouslySeen) {
            frequency++;
        }
        // if we've reached a new value, assign the previous totals to
        // the array and reset frequency to 1
        else {
            frequencyArray[index][0] = previouslySeen;
            frequencyArray[index][1] = frequency;
            index++;
            frequency = 1;
        } 

        previouslySeen = inputCopy[i];
    }

    // don't forget to record the last value group
    frequencyArray[frequencyArray.length - 1][0] = previouslySeen;
    frequencyArray[frequencyArray.length - 1][1] = frequency;

    return frequencyArray;
}

Algunas de estas características, si va a reutilizar alguna de las funcionalidades, se deben implementar en diferentes métodos (particularmente el código para colapsar una matriz 2D en una matriz 1D, y la que encuentra la cantidad de elementos únicos en su ordenado 1D matriz).

Respuesta: 2

Un ejemplo rápido es una colección del nombre y apellido de los usuarios. Un método requiere que compare usando el primer nombre, otro usando el apellido. ¿Es posible tener dos compareTo () diferentes? ...

Cómo crear esto: JButton b = new JButton ("text"). AddActionListener (e -> classX.addNewTest ())); botones.add (b); en una linea? Intenté esto: panel.add (b = new JButton ("text"). AddActionListener (e ...

Mi aplicación ya está publicada en Play Store cuando actualice esta aplicación, luego Genere un paquete firmado / APK y luego elegiré la ruta existente pero "No se encontró ninguna clave con el alias 'clave 0' en el almacén de claves" este mensaje ...

Tengo una página jsp, índice, este es su código: <script src = "http://code.jquery.com/jquery-latest.min.js"> </script> <script src = "alteraSala.js" > </script> <div id = "conteudo" & ...