gpt4 book ai didi

javascript - leetcode 合并排序数组

转载 作者:行者123 更新时间:2023-12-03 08:05:21 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com