Source:
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int curr = m + n - 1, p1 = m - 1, p2 = n - 1;
while (p2 >= 0) {
if (p1 >= 0 && nums1[p1] >= nums2[p2]) {
nums1[curr] = nums1[p1];
p1--;
} else {
nums1[curr] = nums2[p2];
p2--;
}
curr--;
}
}
}
Mind edge cases,p1 p2 could be -1. Perform in reverse order.