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

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

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;        
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容