题目描述:

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。

解析:

1.定义一个新的空数组nums,然后合并数组nums,nums1,nums2
2.合并数组方法,定义三个指针i,j,k分别指向数组nums1,nums2,nums,
遍历数组nums1和nums2的值,按从小到大的顺序填入数组nums中,
若遍历完一个数组的值后,另一个数组的值还有,直接添加到nums数组中即可。
3.判断数组nums中值的个数为奇数还是偶数,然后返回中位数。

Java:

public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int[] nums = new int[nums1.length + nums2.length];
        merge(nums, nums1, nums2);
        int l = nums.length;
        if(l % 2 == 0) {
            return (nums[(l - 1)/2] + nums[l/2]) /2.0;
        } else {
            return nums[l/2] * 1.0;
        }
    }
    public void merge(int[] nums, int[] nums1, int[] nums2) {
        int i = 0, j = 0, k = 0;
        while(i < nums1.length && j < nums2.length) {
            if(nums1[i] <= nums2[j]) {
                nums[k++] = nums1[i++];
            } else {
                nums[k++] = nums2[j++];
            }
        }
        while(i < nums1.length) {
            nums[k++] = nums1[i++];
        }
        while(j < nums2.length) {
            nums[k++] = nums2[j++];
        }
    }