Although it is a simple question, it must be carefully treated.
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int current = m + n - 1; int index1 = m - 1; int index2 = n - 1; while (index1 >= 0 || index2 >= 0) { int i1 = Integer.MIN_VALUE; int i2 = Integer.MIN_VALUE; if (index1 >= 0) { i1 = nums1[index1]; } if (index2 >= 0) { i2 = nums2[index2]; } if (i1 > i2) { nums1[current--] = nums1[index1--]; } else { nums1[current--] = nums2[index2--]; } } } }