传送门
逆序双指针
逆序双指针
题解
javascript
var merge = function (nums1, m, nums2, n) {
// 定义两个指针,分别指向两数组最后一个元素
let i = m - 1;
let j = n - 1
// idx用来记录合并后用来写入的位置index
let idx = m + n - 1;
// 当两数组都还有未合并元素
while (i >= 0 && j >= 0) {
// 如果第一个数组元素大,把它放到合并数组中,然后向左移动
nums1[idx--] = nums1[i] >= nums2[j] ? nums1[i--] : nums2[j--];
}
// 第二个数组如果还有未合并,全部加入到数组一中
while (j >= 0) {
nums1[idx--] = nums2[j--];
}
};
// i--; --在变量后面,先用后减, i--是i的原值
// --i; --在变量前面,先减后用,--i 等于 i-1 后的值;
PS记忆
- a-- 可以理解为“我先用 a,然后你(计算机)在空闲的时候把它减少 1”。a-- 首先会返回 a 的当前值,然后才会把 a 减少 1。
- --a 可以理解为“在我使用 a 之前,你(计算机)先把它减少 1”。--a 会首先把 a 减少 1,然后返回新的 a 值。