var merge = function(nums1, m, nums2, n) { //contcating two array let array = nums2.concat(nums1) // sort the array array.sort((a,b) => ab) // remove element > m+n length return array.slice(m+nn) };Esta función ^ regresa -> [1,2,3,0,0,0] si estoy aplicando la consola, la respuesta es la misma que se esperaba -> [1,2,2,3,5,6]
Por qué está pasando esto ?
Remove la función de división del final de la función. slice(m+nn) divide su matriz ordenada y devuelve la matriz desde el índice m+1 hasta el último índice.
var merge = function(nums1, m, nums2, n) { //contcating two array let array = nums2.concat(nums1) // sort the array array.sort((a,b) => ab) // remove element > m+n length return array.slice(m+nn); }; console.log(merge([2,4,8,9],4,[0,4,6,9],4)); Puede usar la siguiente función para fusionar y luego ordenar las dos matrices. La complejidad temporal de este enfoque es O(nlogn)
function merge(arr1,arr2){ return [...arr1,...arr2].sort(); } console.log(merge([4,8,6],[1,3,9,10])); El segundo enfoque se ejecuta en tiempo O(n) .
function merge(arr1,m,arr2,n){ let result = []; let i=0 , j = 0 ; while(i<m && j<n){ if(arr1[i]<arr2[j]){ result.push(arr1[i]); i++; }else{ result.push(arr2[j]); j++; } } while(i<m){ result.push(arr1[i]); i++; } while(j<n){ result.push(arr2[j]); j++; } return result; } console.log(merge([4,5,6],3,[1,3,8,10],4));No vi ningún problema con su código y funciona, solo agregué otro código. Creo que el problema con tu console.log .
var merge = function(nums1, m, nums2, n) { //contcating two array let array = nums2.concat(nums1) // sort the array array.sort((a,b) => ab) // remove element > m+n length return array.slice(m+nn) }; console.log(merge([1,2,3,0,0,0],3,[2,5,6],3)); var merge = function(nums1, m, nums2, n) { return nums1.slice(0, m) .concat(nums2.slice(0, n)) .sort((i, j) => i - j); }; console.log( merge([1,2,3,0,0,0],3,[2,5,6],3))