88. 合并两个有序数组
因为nums1数组的大小是m+n,为了不占用额外的内存空间,可以直接在nums1数组上进行操作;
使用两个指针从两个数组的最后遍历,模拟即可
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p = m - 1, q = n - 1;
int cnt = m + n - 1;
while(p >= 0 || q >= 0){
if(p == -1){
nums1[cnt] = nums2[q];
q--;
}
else if(q == -1){
nums1[cnt] = nums1[p];
p--;
}
else if(nums1[p] >= nums2[q]){
nums1[cnt] = nums1[p];
p--;
}
else{
nums1[cnt] = nums2[q];
q--;
}
cnt--;
}
}
};