1public void merge(int[] nums1, int m, int[] nums2, int n) {
2 // Initialize pointers
3 int p1 = m - 1;
4 int p2 = n - 1;
5 int p = m + n - 1;
6
7 // Merge from right to left
8 while (p1 >= 0 && p2 >= 0) {
9 if (nums1[p1] > nums2[p2]) {
10 nums1[p] = nums1[p1];
11 p1--;
12 } else {
13 nums1[p] = nums2[p2];
14 p2--;
15 }
16 p--;
17 }
18
19 // Copy remaining elements from nums2
20 while (p2 >= 0) {
21 nums1[p--] = nums2[p2--];
22 }
23}