javascript - leetcode 合并排序数组

标签 javascript merge

var merge = function(nums1, m, nums2, n) {

    //contcating two array
     let array = nums2.concat(nums1)
    // sort the array
     array.sort((a,b) => a-b)
     // remove element > m+n length
 return array.slice(m+n-n)
};

此 ^ 函数正在返回 -> [1,2,3,0,0,0] 如果我应用控制台,那么答案与预期相同 -> [1,2,2,3,5,6]

为什么会发生这种情况?

最佳答案

从函数末尾删除切片函数。 slice(m+n-n) 对已排序的数组进行切片并返回从索引 m+1 到最后一个索引的数组。

var merge = function(nums1, m, nums2, n) {

    //contcating two array
     let array = nums2.concat(nums1)
    // sort the array
     array.sort((a,b) => a-b)
     // remove element > m+n length
 return array.slice(m+n-n);
};

console.log(merge([2,4,8,9],4,[0,4,6,9],4));

您可以使用以下函数对两个数组进行合并然后排序。 这种方法的时间复杂度是O(nlogn)

function merge(arr1,arr2){
  return [...arr1,...arr2].sort();
}

console.log(merge([4,8,6],[1,3,9,10]));

第二种方法的运行时间为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));

关于javascript - leetcode 合并排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72526419/

相关文章:

使用 https url 的 Javascript JSON 解析

git - merge 而不 merge 分支提交历史 sourcetree

r - 一种将不同长度的命名向量合并到 R 中的数据框(将名称信息保留为列名)的快速方法

git - VS 团队资源管理器 merge 冲突

javascript - Angular 6 - 从 app.component.html 中删除数据并更新 View 中的更改

javascript - .next() 在 .each() 循环中不起作用

javascript - 为什么 ajax loadXml 回调似乎不起作用

python - 用矢量化方法替换 python for 循环以丢弃丢失的数据

python - Pandas 合并和求和数据帧

javascript - clearInterval - 出了点问题