力扣-4.寻找两个正序数组的中位数

4.寻找两个正序数组的中位数

题目大意

给定两个升序数组,求这两个数组的中位数

解题思路

按照归并排序的思路,将两个数组进行归并,在归并后的数组中直接寻找中位数。

code

class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length, n = nums2.length;
        double [] nums3 = new double[2005];
        int l1=0,l2=0,l3=0;
        while(l1<m && l2<n){
            while(l1<m&&(nums1[l1]<nums2[l2]))
                nums3[l3++]=nums1[l1++];
            while((l1<m&&l2<n)&&(nums1[l1]>nums2[l2]))
                nums3[l3++]=nums2[l2++];
            if((l1<m&&l2<n)&&(nums1[l1]==nums2[l2])){
                nums3[l3++]=nums1[l1++];
                nums3[l3++]=nums2[l2++];
            }
        }
        while(l1<m)
            nums3[l3++]=nums1[l1++];
        while(l2<n)
            nums3[l3++]=nums2[l2++];
        if(l3%2==1){
            return nums3[l3/2];
        }
        else{
            return (nums3[l3/2]+nums3[l3/2-1])/2.0;
        }
    }
}
上一篇:多表insert操作详解


下一篇:2.两数相加