🔥🔥 Explicación y Resolución Del Ejercicio En Español Java | Python | PHP | JavaScript | C++ 🔥🔥
Lectura\n1636 Sort Array by Increasing Frequency\n\nDado un arreglo de enteros, hay que ordenarlo en orden creciente seg\xFAn la frecuencia de los valores. \nSi
# Lectura\n1636 Sort Array by Increasing Frequency\n\nDado un arreglo de enteros, hay que ordenarlo en orden creciente seg\xFAn la frecuencia de los valores. \nSi dichos valores tienen la misma frecuencia, ord\xE9nelos en orden decreciente.\n\nEntrada: nums = [2,3,1,3,2]\nSalida: [1,3,3,2,2]\n\nExplicaci\xF3n: \'2\' y \'3\' tienen una frecuencia de 2, por lo que est\xE1n ordenados en orden decreciente.\n\n\n# Video\n\nhttps://youtu.be/uC1VJbMwXGY\n\nSi te gust\xF3 el contenido \xA1te invito a suscribirte!: \n\u2705https://www.youtube.com/@hermescoder?sub_confirmation=1\n\n\u2705 Informaci\xF3n sobre clases particulares de algoritmos y programaci\xF3n:\nhttps://www.instagram.com/p/CxvsUwYOzFx/\n\n# Pasos para realizar el algoritmo:\n\n**1.-** Creamos un HashMap para almacenar las frecuencias. Recorremos el arreglo nums y agregamos un nuevo elemento, que tiene como clave el n\xFAmero evaluado y al valor se le va sumando uno.\n\n**2.-**  Recorremos el hashmap de frecuencias y creamos una lista llamada response para almacenar tuplas que contienen el valor y su frecuencia correspondiente.\n\n**3.-** Ordenamos la lista de tuplas por frecuencia y luego por elemento, en este caso, utilizamos el Collections.sort\n\n**4.-** Creamos un nuevo arreglo para almacenar el resultado ordenado. Recorremos response, y por cada elemento, lo agregamos a result\n\n**5.-** Retornamos el resultado\n\n# C\xF3digo \n\n```Java []\n/*\n\n1636. Sort Array by Increasing Frequency\n\nDado un arreglo de enteros, hay que ordenarlo en orden creciente seg\xFAn la frecuencia de los valores. \nSi dichos valores tienen la misma frecuencia, ord\xE9nelos en orden decreciente.\n\nEntrada: nums = [2,3,1,3,2]\nSalida: [1,3,3,2,2]\n\nExplicaci\xF3n: \'2\' y \'3\' tienen una frecuencia de 2, por lo que est\xE1n ordenados en orden decreciente.\n */\n\n\nclass Solution {\n    public int[] frequencySort(int[] nums) {\n        // paso#1: \n        //Creamos un HashMap para almacenar las frecuencias\n        //Recorremos el arreglo nums y agregamos un nuevo elemento, que tiene como clave el n\xFAmero evaluado y al valor se le va sumando uno.\n        HashMap<Integer, Integer> frecuencias = new HashMap<>();\n        for (int num : nums) frecuencias.put(num, frecuencias.getOrDefault(num, 0) + 1);\n        //frecuencias = {1=1, 2=2, 3=2}\n\n        // paso#2\n        // Recorremos el hashmap de frecuencias y creamos una lista llamada response para almacenar tuplas que contienen el valor y su frecuencia correspondiente.\n        List<Integer[]> response = new ArrayList<>();\n        for (Map.Entry<Integer, Integer> entry : frecuencias.entrySet())  response.add(new Integer[]{entry.getKey(), entry.getValue()});\n        /*response =[\n            val   freq\n             1      1\n             2      2\n             3      2\n        ]*/\n\n        // paso#3\n        // Ordenamos la lista de tuplas por frecuencia y luego por elemento, en este caso, utilizamos el Collections.sort\n        Collections.sort(response, (a, b) -> {\n            if (a[1] == b[1]) return b[0] - a[0]; // Ordenar elementos con la misma frecuencia en orden descendente\n            else return a[1] - b[1]; // Ordenar por frecuencia en orden ascendente\n        });\n        /*response =[\n            val   freq\n             1      1\n             3      2\n             2      2    \n        ]*/\n\n        //Paso#4\n        //Creamos un nuevo arreglo para almacenar el resultado ordenado. Recorremos response, y por cada elemento, lo agregamos a result.\n        int[] result = new int[nums.length];\n        int index = 0;\n        for (Integer[] tupla : response) {\n            int val = tupla[0];\n            int freq = tupla[1];\n            for (int i = 0; i < freq; i++) result[index++] = val;\n        }\n\n        //result = [1,3,3,2,2]\n\n\n\n        //paso#5\n        //Retornamos el resultado\n        return result;\n\n\n    }\n}\n```\n\n```PHP []\nclass Solution {\n    function frequencySort($nums) {\n\n      //  asort($nums);\n        $response = array();\n\n        foreach ($nums as $key => $value)  $response[$value]++;\n        \n        asort($response);\n\n        $new_response=array();\n        foreach ($response as $key => $value){\n\n            $freq = $value;\n\n            if(!isset($new_response[$freq]))$new_response[$freq]=array();\n            \n            for ($i = 0; $i < $freq; $i++)  array_push($new_response[$freq], $key);\n\n            rsort($new_response[$freq]);\n            \n        }\n        \n        $new_response2= array();\n          foreach ($new_response as $key => $value){\n\n             foreach ($value as $key2 => $value2){\n                array_push($new_response2,$value2);\n             }\n\n        }\n\n        return $new_response2;\n    \n        \n    }\n}\n\n```\n\n```Python []\nclass Solution(object):\n    def frequencySort(self, nums):\n        frecuencias = {}\n        for num in nums:\n            frecuencias[num] = frecuencias.get(num, 0) + 1\n\n        # Paso 2: Crear una lista de tuplas con valor y frecuencia\n        respuesta = []\n        for clave, valor in frecuencias.items():\n            respuesta.append((valor, clave))\n\n        # Paso 3: Ordenar la lista de tuplas por frecuencia y valor\n        respuesta.sort(key=lambda x: (x[0], -x[1]))\n\n        # Paso 4: Crear un nuevo array para almacenar el resultado ordenado\n        resultado = [None] * len(nums)\n        indice = 0\n        for valor, clave in respuesta:\n            for i in range(valor):\n                resultado[indice] = clave\n                indice += 1\n\n        # Paso 5: Retornar el resultado\n        return resultado\n\n```\n```JavaScript []\n\n/**\n * @param {number[]} nums\n * @return {number[]}\n */\nvar frequencySort = function(nums) {\n    // Paso 1: Crear un objeto HashMap para almacenar las frecuencias\n  const frecuencias = {};\n  for (const num of nums) {\n    frecuencias[num] = frecuencias[num] ? frecuencias[num] + 1 : 1;\n  }\n  // frecuencias = {1: 1, 2: 2, 3: 2}\n\n  // Paso 2: Crear una lista para almacenar tuplas (valor, frecuencia)\n  const response = [];\n  for (const [key, value] of Object.entries(frecuencias)) {\n    response.push([key, value]);\n  }\n  /* response = [\n      [1, 1],\n      [2, 2],\n      [3, 2]\n  ] */\n\n  // Paso 3: Ordenar la lista por frecuencia y luego por valor\n  response.sort((a, b) => {\n    if (a[1] === b[1]) return b[0] - a[0]; // Ordenar elementos con la misma frecuencia en orden descendente\n    else return a[1] - b[1]; // Ordenar por frecuencia en orden ascendente\n  });\n  /* response = [\n      [1, 1],\n      [3, 2],\n      [2, 2]\n  ] */\n\n  // Paso 4: Crear un nuevo arreglo para almacenar el resultado ordenado\n  const result = new Array(nums.length);\n  let index = 0;\n  for (const [value, freq] of response) {\n    for (let i = 0; i < freq; i++) {\n      result[index++] = value;\n    }\n  }\n\n  // Paso 5: Retornar el resultado\n  return result;\n};\n```\n\n```C++ []\nclass Solution {\npublic:\n    vector<int> frequencySort(vector<int>& nums) {\n        // paso 1: Crear un mapa para almacenar las frecuencias\n    map<int, int> frecuencias;\n    for (int num : nums) {\n        frecuencias[num]++;\n    }\n\n    // paso 2: Crear una lista de tuplas para almacenar el valor y su frecuencia\n    vector<vector<int>> response;\n    for (auto par : frecuencias) {\n        response.push_back({par.first, par.second});\n    }\n\n    // paso 3: Ordenar la lista de tuplas por frecuencia y luego por valor\n    sort(response.begin(), response.end(), [](const vector<int>& a, const vector<int>& b) {\n        if (a[1] == b[1]) {\n            return a[0] > b[0]; // Ordenar elementos con la misma frecuencia en orden descendente\n        } else {\n            return a[1] < b[1]; // Ordenar por frecuencia en orden ascendente\n        }\n    });\n\n    // paso 4: Crear un nuevo vector para almacenar el resultado ordenado\n    vector<int> result(nums.size());\n    int index = 0;\n    for (const vector<int>& tupla : response) {\n        int valor = tupla[0];\n        int frecuencia = tupla[1];\n        for (int i = 0; i < frecuencia; i++) {\n            result[index++] = valor;\n        }\n    }\n\n    // paso 5: Retornar el resultado\n    return result;\n    }\n};\n```\n\n
['Array', 'Hash Table', 'PHP', 'Sorting', 'Python', 'C++', 'Java', 'JavaScript']