题解 | #三个牛群中位数#
三个牛群中位数
https://www.nowcoder.com/practice/8bc0369faf7c4ac5ab336f38e859db05
考察的知识点:数组;
解答方法分析:
- 定义一个
mergeArrays函数来合并三个有序数组,并定义一个findMedianSortedArray函数来求中位数。 mergeArrays函数中使用了三个指针来遍历三个有序数组,在每一轮循环中,将当前指针所指的最小元素添加到合并后的数组中。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;
}
};

SHEIN希音公司福利 261人发布