class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int r = m + n -1, index1 = m - 1, index2 = n -1;
while (index1 >= 0 && index2 >= 0){
if (nums1[index1] >= nums2[index2]) {
nums1[r] = nums1[index1];
index1--;
r--;
} else {
nums1[r] = nums2[index2];
index2--;
r--;
}
}
while (index1 >= 0){
nums1[r] = nums1[index1];
index1--;
r--;
}
while (index2 >= 0){
nums1[r] = nums2[index2];
index2--;
r--;
}
}
};
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (m == 0) {
for (int i = 0; i < n; i++) {
nums1[i] = nums2[i];
}
}
int idx = m + n - 1, idx1 = m - 1, idx2 = n -1;
while (idx2 >= 0) {
if (idx1 >=0 && nums1[idx1] >= nums2[idx2]) {
nums1[idx--] = nums1[idx1--];
} else {
nums1[idx--] = nums2[idx2--];
}
}
}
};