合并两个有序数组
2020-06-21 本文已影响0人
Mark_大东
合并两个有序数组
难度:简单
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
关键点:有序数组
第一种方法
// 数组合并,然后排序,注意区分concat、splice
var merge = function(nums1, m, nums2, n) {
nums1.splice(m,n,...nums2)
return nums1.sort((a,b)=>a-b)
};
// 相同的方式,这个更好理解
var merge = function(nums1, m, nums2, n) {
for (let i = 0 ; i < n ; i ++){
nums1[m + i] = nums2[i]
}
return nums1.sort((a,b)=>a-b)
};
第二种方法:
//有序数组,最后一个是最大
//从nums1的最后一个插入,即:p = m + n - 1
var merge = function(nums1, m, nums2, n) {
let p1 = m - 1
let p2 = n - 1
let p = m + n - 1
while (p2 >= 0){
if (nums1[p1] > nums2[p2]){
nums1[p] = nums1[p1]
p --
p1 --
}else{
nums1[p] = nums2[p2];
p --
p2 --
}
}
};