88. 合并两个有序数组
双指针法(归并排序法)
import java.util.Arrays;
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        /**
         * 双指针遍历
         * 先将两个子数组简单合并,然后分别从子数组第一个元素开始比较,将小的放在前面
         */
        for (int i = m; i < nums1.length; i++) {
            nums1[i] = nums2[i - m];
        }
        int[] temp = Arrays.copyOf(nums1, nums1.length);
        int i = 0;
        int left = 0;
        int right = m;
        while (i < nums1.length){
            if (left == m){
                nums1[i] = temp[right];
                right++;
                i++;
            }
            else if (right == nums1.length){
                nums1[i] = temp[left];
                left++;
                i++;
            }
            else {
                if (temp[left] < temp[right]){
                    nums1[i] = temp[left];
                    left++;
                    i++;
                }
                else {
                    nums1[i] = temp[right];
                    right++;
                    i++;
                }
            }
        }
    }
}
/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(1)
 */
https://leetcode-cn.com/problems/merge-sorted-array/