【发布时间】:2021-10-11 09:32:15
【问题描述】:
两个长度分别为m和n的数组(nums1和nums2)必须合并,并在数组nums1中排序。 nums1 的长度是 m+n,nums1 中的最后一个 n 元素是 0。
不退货,nums1 必须修改。
LeetCode question
示例
输入
nums1 = [1, 2, 3, 0, 0, 0]
m = 3
nums2 = [2, 5, 6]
n = 3
输出[1, 2, 2, 3, 5, 6]
说明
我们要合并的数组是[1,2,3] 和[2,5,6]。合并的结果是[1,2,2,3,5,6],下划线的元素来自nums1。
我已经完成了这个问题,但不知道为什么它不起作用。
var merge = function(nums1, m, nums2, n) {
let j = 0
for (let i = m; i < n; i++) {
nums1[i] = nums2[j]
j++
}
};
驱动代码:
let nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
merge(nums1, m, nums2, n)
console.log(nums1)
输出:
[1, 2, 3, 0, 0, 0]
【问题讨论】:
-
您误解了
m和n的用途。您应该在调试器中单步执行此操作,您会很快注意到您的循环从未进入。 -
请在 leetcode 讨论算法问题。我记得 .net 有 Union 操作左右