给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
    初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。

    示例 1:

    输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
    输出:[1,2,2,3,5,6]
    示例 2:

    输入:nums1 = [1], m = 1, nums2 = [], n = 0
    输出:[1]

    提示:

    nums1.length == m + n
    nums2.length == n
    0 <= m, n <= 200
    1 <= m + n <= 200
    -109 <= nums1[i], nums2[i] <= 109

    1. class Solution {
    2. public void merge(int[] nums1, int m, int[] nums2, int n) {
    3. /** 思路1:暴力法
    4. (1)双层for循环,遍历数组2,对比数组1,直到找到对应的位置
    5. (2)找到对应的位置之后,用array copy做数组拷贝
    6. 时间复杂度o(m*n)
    7. 思路2:指针法
    8. 因为两个数组都是排序数组,所以,对比数组1和数组2末尾的位置大小,较大的就进入nums1的末尾
    9. (1)设置三个指针,一个为nums2的length,一个是nums1的length,一个是nums1的最后一个数的位置
    10. (2)while循环遍历对比两个指向数字的值,谁大谁放到nums1的末尾
    11. */
    12. int len = m + n -1;
    13. int m1 = m-1;
    14. int n1 = n-1;
    15. while(m1 >= 0 && n1 >= 0){
    16. int tmp1 = nums1[m1];
    17. int tmp2 = nums2[n1];
    18. if(tmp1 > tmp2) {
    19. nums1[len--] = tmp1;
    20. m1--;
    21. }else{
    22. nums1[len--] = tmp2;
    23. n1--;
    24. }
    25. }
    26. System.arraycopy(nums2, 0, nums1, 0, n1 + 1);
    27. }
    28. }