这一题要求在nums1上面进行返回,nums1数组上已经给了空位了。
记得之前还有其他题目是在原数组上面操作,去重之类的,忘记多少题, 这种就是后面往前面挪动就好了,前面弄一个index慢慢自增就能解决
这里的这题也差不多是相同的思路,只不过是从尾部开始的,如果从头部开始,就要挪动元素,操作的次数就变多了。
var merge = function (nums1, m, nums2, n) {
let i = m - 1
let j = n - 1
let index = m + n - 1
while (i >= 0 && j >= 0) {
if (nums1[i] >= nums2[j]) {
nums1[index--] = nums1[i--]
} else {
nums1[index--] = nums2[j--]
}
}
// 如果是 nums1 剩余下元素,那么就不需要操作了
// nums2 剩余元素,就要全部挪动到 nums1 上面去
while (j >= 0) {
nums1[index--] = nums2[j--]
}
};