Description;
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Solution:
还是一个类似Two Pointer的题目。这里可以从头也可以从尾开始,但是为了代码简洁,从尾遍历更加简洁。
这里有一个小技巧,从尾部往前面重新赋值,nums1的数字不会受到影响。
import java.util.*;
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int tail = m + n - 1;
int i = m - 1, j = n - 1;
while (i >= 0 && j >= 0) {
if (nums1[i] > nums2[j]) {
nums1[tail--] = nums1[i--];
} else {
nums1[tail--] = nums2[j--];
}
}
for (; i >= 0; i--)
nums1[tail--] = nums1[i];
for (; j >= 0; j--)
nums1[tail--] = nums2[j];
}
}