class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int[] ans = new int[m + n]; int p1 = 0, p2 = 0, index = 0; while(p1 < m && p2 < n){ if(nums1[p1] <= nums2[p2]){ ans[index++] = nums1[p1++]; }else{ ans[index++] = nums2[p2++]; } } while(p1 < m){ ans[index++] = nums1[p1++]; } while(p2 < n){ ans[index++] = nums2[p2++]; } for(int i = 0; i < index; i++){ nums1[i] = ans[i]; } } } class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { if(nums2 == null) return; int p1 = m - 1, p2 = n - 1, tail = m + n - 1; while(p1 >= 0 && p2 >= 0){ if(nums1[p1] >= nums2[p2]){ nums1[tail--] = nums1[p1--]; }else{ nums1[tail--] = nums2[p2--]; } } while(p2 >= 0){ nums1[tail--] = nums2[p2--]; } } }