核心思路
-
双指针算法 从后向前
-
讲nums2中的数字放到nums1中, 从后边写入, 一直写入到前边
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
// 确定最终数组的最后一个位置
int k = m + n - 1;
// 确定在数组中的最后一个位置
m--;
n--;
//
while (m >= 0 || n >= 0) {
// 如果m n 同时有效
if (m >= 0 && n >= 0) {
nums1[k--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
} else if (m >= 0) {
nums1[k--] = nums1[m--];
} else if (n >= 0) {
nums1[k--] = nums2[n--];
}
}
}
};