华为机考真题 -- 查找众数及中位数

题目描述:

1.众数是指一组数据中出现次数量多的那个数,众数可以是多个
2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那
最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所
得的结果就是中位数
3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数


输入描述:

输入一个一维整型数组,数组大小取值范围 0<N<1000,数组中每个元素取值范围0<E<1000


输出描述:

输出众数组成的新数组的中位数

示例 1:

输入
10 11 21 19 21 17 21 16 21 18 15
输出
21

示例 2:

输入
2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4


输出
3

示例 3:

输入
5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39


输出
7

C++源码:

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <numeric>
#include <string>
#include <sstream>
using namespace std;

int findMedian(vector<int>& nums) {
    sort(nums.begin(), nums.end());
    int n = nums.size();
    if (n % 2 == 0)
        return (nums[n / 2 - 1] + nums[n / 2]) / 2;
    else
        return nums[n / 2];
}

int main() {
    vector<int> nums;
    string sizeArr;
    int temp;
    cout << "请输入数组元素:";
    //cin >> sizeArr;
    getline(cin, sizeArr);
    stringstream ss(sizeArr);
    while (ss >> temp)
    {
        nums.push_back(temp);
    }

    map<int, int> frequency;
    for (const auto& num : nums) {
        frequency[num]++;
    }

    vector<int> modeArray;
    int maxFreq = 0;
    for (const auto& pair : frequency) {
        if (pair.second > maxFreq) {
            modeArray.clear();
            modeArray.push_back(pair.first);
            maxFreq = pair.second;
        }
        else if (pair.second == maxFreq) {
            modeArray.push_back(pair.first);
        }
    }

    int median = findMedian(modeArray);
    cout << "众数组成的新数组的中位数为:" << median << endl;

    system("pause");
    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD考真是指华为公司在招聘过程所使用的在线考试目。这些目旨在评估应聘者的技术能力、逻辑思维以及解决问的能力。以下是对华为OD考真解读的简要说明。 华为OD考真的内容丰富多样,主要涵盖计算科学、网络技术、算法设计、数据结构等多个领域。对于应聘者来说,这些目不仅要求具备扎实的专业知识,还要求能够将知识应用于实际场景,并能够灵活运用、创新思考。 在解答华为OD考真时,应聘者需要具备良好的解思路和方法。首先,应聘者需要仔细阅读目,理解意和要求,明确问的关键点。其次,应聘者需要运用所学知识和技能分析问,并制定解决方案。此时,良好的逻辑思维和分析能力是十分重要的。最后,应聘者需要将解决方案转化为具体的代码实现或解步骤,并进行测试和验证。 华为OD考真的目的是为了筛选出具备优秀技术能力和解决问能力的人才。在解过程,华为注重考察应聘者的创新能力和解决问的能力,不仅关注结果,还关注解决问的思路和方法。因此,应聘者在回答真时除了要给出正确的答案,还需要展现出对问的全面思考和独立思考的能力。 总之,华为OD考真的解答需要应聘者具备扎实的专业知识、良好的解思路、逻辑思维能力和解决问的能力。这些真旨在筛选出具备创新思维和解决问能力的优秀人才。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值