美文网首页
LeetCode刷题 题4. 寻找两个正序数组的中位数

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

作者: dreamer11 | 来源:发表于2021-05-17 09:59 被阅读0次

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

示例 :
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

思路:合并之后排序,再找中位数; 但是要注意int与double类型转换的问题。

double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        vector<int>nums;   //存储nums1和nums2的合并数组
        for(int i=0; i<nums1.size(); i++)
            nums.push_back(nums1[i]);
        for(int j=0; j<nums2.size(); j++)
            nums.push_back(nums2[j]);
        sort(nums.begin(), nums.end());  //对合并数组进行排序
        int len = nums.size();     //获取合并数组的长度
        if(0 == len)    //长度为0,说明为空,输出0.00000
            return 0.00000;
        if(len%2 == 0)    //长度为偶数,返回值是中间两数的平均数,
            return (double)(nums[len/2-1] + nums[len/2])/2; //此处前面要加double,若不加double,比如2和3的平均数计算出来就是2而不是2.5   
        else   //长度为奇数,返回值就是中间那个。返回值自动是double类型。 
            return nums[len/2];
    }

相关文章

网友评论

      本文标题:LeetCode刷题 题4. 寻找两个正序数组的中位数

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