美文网首页
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