题解 | #三个牛群中位数#

三个牛群中位数

https://www.nowcoder.com/practice/8bc0369faf7c4ac5ab336f38e859db05

考察的知识点:数组;

解答方法分析:

  1. 定义一个 mergeArrays 函数来合并三个有序数组,并定义一个 findMedianSortedArray 函数来求中位数。
  2. mergeArrays 函数中使用了三个指针来遍历三个有序数组,在每一轮循环中,将当前指针所指的最小元素添加到合并后的数组中。
  3. findMedianSortedArray 函数中调用了 mergeArrays 函数将三个数组合并成一个有序数组然后根据合并后数组的长度判断中位数的位置,返回相应的值。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    double findMedianSortedArray(vector<int>& herd1, vector<int>& herd2,
                                 vector<int>& herd3) {
        vector<int> mergedArray = mergeArrays(herd1, herd2, herd3);
        int size = mergedArray.size();
        if (size % 2 == 0) {
            int mid = size / 2;
            return (mergedArray[mid - 1] + mergedArray[mid]) / 2.0;
        } else {
            int mid = size / 2;
            return mergedArray[mid];
        }
    }

  private:
    vector<int> mergeArrays(vector<int>& herd1, vector<int>& herd2,
                            vector<int>& herd3) {
        vector<int> mergedArray;
        int i = 0, j = 0, k = 0;
        while (i < herd1.size() && j < herd2.size() && k < herd3.size()) {
            if (herd1[i] <= herd2[j] && herd1[i] <= herd3[k]) {
                mergedArray.push_back(herd1[i]);
                i++;
            } else if (herd2[j] <= herd1[i] && herd2[j] <= herd3[k]) {
                mergedArray.push_back(herd2[j]);
                j++;
            } else {
                mergedArray.push_back(herd3[k]);
                k++;
            }
        }

        while (i < herd1.size()) {
            mergedArray.push_back(herd1[i]);
            i++;
        }
        while (j < herd2.size()) {
            mergedArray.push_back(herd2[j]);
            j++;
        }
        while (k < herd3.size()) {
            mergedArray.push_back(herd3[k]);
            k++;
        }

        return mergedArray;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务