美文网首页
leetcode 4. 寻找两个有序数组的中位数

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

作者: 橘子煲汤 | 来源:发表于2019-02-17 17:09 被阅读0次

主要是使用到了归并思想 虽然写的是困难 但是并不是很难

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int p1=0,p2=0;
        int sp1=nums1.size();
        int sp2=nums2.size();
        int n=sp1+sp2;
        vector<int>ans(n,0);
        //首先是使用归并排序的思想 排列成升序数组
        for(int i=0;i<n;i++)
        {
            if(p1>=sp1) {
                ans[i]=nums2[p2];
                p2++;
            }
            else if(p2>=sp2){
                ans[i]=nums1[p1];
                p1++;
            }
            else if(nums1[p1]<nums2[p2]){
                ans[i]=nums1[p1];
                p1++;
        }
            else{
                ans[i]=nums2[p2];
                p2++;
            }
            //归并
        }
       
        double res;
        //根据数列长度 来找到中值的索引
        if(n%2==0)
        {
           res=(double)(ans[n/2]+ans[n/2-1])/2; 
        }
        else
        {
            res=(double)ans[n/2];
        }
    return res;        
    }
};

相关文章

网友评论

      本文标题:leetcode 4. 寻找两个有序数组的中位数

      本文链接:https://www.haomeiwen.com/subject/gkogeqtx.html