// https://leetcode.com/problems/merge-sorted-array/
class Solution {
public:
void merge(std::vector<int>& nums1, int m, std::vector<int>& nums2, int n) {
int lastIndexOffset = 0, indexOffset;
for (int i = 0; i < n; i++) {
if (nums2[i] >= nums1[m - 1 + lastIndexOffset]) {
// m - 1 + lio + 1 = m + lio
nums1[m + lastIndexOffset] = nums2[i];
lastIndexOffset++;
continue;
}
indexOffset = 0;
for (int j = 0; j < m; j++) {
if (nums1[j] > nums2[i]) {
nums1[j + indexOffset - 1] = nums2[i];
indexOffset++;
continue;
}
nums1[j] = nums1[j - indexOffset];
}
}
}
};