Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

215
Vistas
la matriz no se modifica con el método, pero después de hacer que su longitud sea 0 y usar el método push, se modifica por qué

A continuación se muestra la pregunta de leetcode: "el problema es cuando uso sort concat cualquier otro método en nums1, es bot modificando nums1 a menos que lo esté vaciando y presionando nuevos datos. El código a continuación funciona, pero ¿qué pasa si no quiero crear nums11 y realizar todos los métodos en nums1".

Entrada: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 Se le dan dos matrices de números enteros nums1 y nums2, ordenadas de forma no decreciente order, y dos enteros m y n, que representan el número de elementos en nums1 y nums2 respectivamente.

Combine nums1 y nums2 en una sola matriz ordenada en orden no decreciente.

La función no debe devolver la matriz ordenada final, sino almacenarla dentro de la matriz nums1. Para adaptarse a esto, nums1 tiene una longitud de m + n, donde los primeros m elementos indican los elementos que deben fusionarse, y los últimos n elementos se establecen en 0 y deben ignorarse. nums2 tiene una longitud de n.

 var merge = function(nums1, m, nums2, n) { let nums11 = []; for(let i = 0; i<m; i++){ nums11.push(nums1[i]) } nums1.length = 0; nums11 = nums11.concat(nums2); nums11.sort((a,b) => { return ab}); for(let i = 0; i<nums11.length;i++){ nums1.push(nums11[i]) } };
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Tal vez puedas probar algo como esto.

 for(let i = 0; i<n ; i++){ nums1[i+m-1] = nums2[i]; // adding nums2 elements to the elements with value 0 in nums1 } nums1.sort((a,b) => {return ab}); return nums1;

En cuanto a la razón por la que no se modifica, podría deberse a las restricciones en la pregunta. No le permitirá agregar más elementos a nums1 porque ya tiene el tamaño que debe tener para que la solución encaje en él.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si revisa el bucle for con cuidado, estamos empujando los elementos a la matriz nums1. Elimina la línea nums1.length=0; y en lugar de insertar elementos en el nums1. Intente cambiar el elemento en i-ésimo índice. Eso resolverá el problema. Como esto

 nums1[i]=(nums11[i])

Este es el código completo.

 function merge(nums1, m, nums2) { let nums11 = []; for(let i = 0; i<m; i++){ nums11.push(nums1[i]) } nums11 = nums11.concat(nums2); nums11.sort((a,b) => { return ab}); for(let i = 0; i<nums11.length;i++){ nums1[i]=(nums11[i]) } };

El código en la pregunta hace que la longitud de la matriz num1 sea 12.

Espero que resuelva el problema.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El requisito de la pregunta es modificar la matriz en el lugar y tampoco usar un método de clasificación integrado.

Considere el siguiente enfoque:

  • Tenga dos punteros i y j que apunten al último índice ( excluyendo el espacio vacío ) de las matrices nums1 y nums2 respectivamente.
  • Tenga un puntero k que apunte al último índice de nums1 , aquí es donde insertaríamos valores durante la iteración.
  • Iterar hasta que se hayan agotado todos los elementos de la matriz nums2 .
  • Coloque el mayor de los dos elementos en el k -ésimo índice.

 function merge(nums1, m, nums2, n) { let i = m - 1, j = n - 1, k = m + n - 1; while (j >= 0) { if (nums1[i] >= nums2[j]) { nums1[k] = nums1[i]; i -= 1; } else { nums1[k] = nums2[j]; j -= 1; } k -= 1; } } const nums1 = [1, 4, 8, 11, 0, 0, 0, 0, 0, 0]; const nums2 = [2, 3, 4, 7, 8, 10]; merge(nums1, nums1.length - nums2.length, nums2, nums2.length); console.log(nums1);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda