Median of Two Sorted Arrays

来源:互联网 发布:mmd成人动作数据 编辑:程序博客网 时间:2024/06/10 15:08

4. Median of Two Sorted Arrays

问题描述

计算两个排好序的数组的中位数

我的解答

首先merge两个数组然后求解中位数

class Solution {public:    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {        vector<int> tmp;        int i, j;        // 处理特殊情况        if (nums1.size() == 0) {            tmp = nums2;        }        else if (nums2.size() == 0) {            tmp = nums1;        }        // merge 两个数组        else {            // 以第一个数组为基准合并            for (i = 0, j = 0; i != nums1.size(); ++i) {                if (i < nums1.size() && j < nums2.size() && nums1[i] < nums2[j]) {                    tmp.push_back(nums1[i]);                }                else if (i < nums1.size() && j < nums2.size() && nums1[i] == nums2[j]) {                    tmp.push_back(nums1[i]);                    tmp.push_back(nums2[j++]);                }                else {                    while (i < nums1.size() && j < nums2.size() && nums1[i] > nums2[j]) {                        tmp.push_back(nums2[j++]);                    }                    tmp.push_back(nums1[i]);                }            }            // 合并剩下的            for (; j < nums2.size(); ++j) {                    tmp.push_back(nums2[j]);            }        }        // 计算中位数        double mid;        int length = tmp.size();        if (length % 2 == 1){            mid = tmp[length / 2];        }        else {            mid = (tmp[length / 2 - 1] + tmp[length /2]) / 2.0;        }        return mid;    }};
0 0
原创粉丝点击