2014华为机试题——取出整型数据中出现次数最多的元素,并按照升序排列返回
2014-07-17 16:21
519 查看
// 取出整型数据中出现次数最多的元素,并按照升序排列返回。 // 要求实现方法: // public static int[] calcTimes(int[] num, int len); // 【输入】 num:整型数组; // len 输入的整数个数 // 【返回】 按照升序排列返回整型数组中出现次数最多的元素 // 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 // 示例 // 输入:num = {1,1,3,4,4,4,9,9,9,10} len = 10 // 返回:{4,9} #include <IOSTREAM> #include <QUEUE> #include <algorithm> using namespace std; int compare(const void *p, const void *q) { return *(const int *)p - *(const int *)q; } queue<int> calcTimes(int arr[], int len) { queue<int> myQueue; qsort(arr, len, sizeof(int), compare); int maxTime = 0; //最多元素出现的次数 int oneTime = 1; //单次中数字出现的次数,注意每次初始值为1 for (int i=0; i<len-1; ++i) { if (arr[i] ==arr[i+1]) ++oneTime; else { if (oneTime == maxTime) { myQueue.push(arr[i]); } else if (oneTime > maxTime) { while (!myQueue.empty()) { myQueue.pop(); } myQueue.push(arr[i]); maxTime = oneTime; } oneTime = 1; } }//end for //对最后一个元素要特殊处理 if (maxTime <= 1) {//当出现的元素次数最多为1时,要把最后一个放入 myQueue.push(arr[i]); } return myQueue; } int main() { int arr[20] = {1,4,9,1,9,3,4,4,9,10}; //结果为:4 9 // int arr[20] = {1,3,5,8,29,33,9,13,18,4}; 结果为: 1 3 4 5 8 9 13 18 29 33 int len = 10; queue<int> que(calcTimes(arr, len)); while (!que.empty()) { cout << que.front() << " "; que.pop(); } return 0; }
相关文章推荐
- 2014华为机试——按照升序排列返回整型数组中包含指定整数的元素
- 取出整型数据中存在指定整数的数据,并按照升序排列返回
- 华为机试—整型数组中出现次数最多的元素
- 华为机试题:输入整型数组和排序标识,对其元素按照升序或降序进行排序
- python字典分别按照key和value升序或者降序排列--以给定一个含有重复元素的数组list,按照其出现次数大小降序输出
- 华为机试—整型数组中出现次数最多的元素
- 求一个整型数组中出现次数最多的一个元素,要求具备较高的效率
- 华为OJ——输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 随机产生50个30到35的整数,统计每个数字出现的次数(TreeMap实现),输出时按照数字的降序排列,并且统计出现次数最多的数字和它的次数。
- 整型数组中出现次数最多的元素
- 华为OJ——输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 华为oj中级 输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 华为上机试题(java)找出一个字符串中出现次数最多的字符
- 【华为OJ】【052-输入整型数组和排序标识,对其元素按照升序或降序进行排序】
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)
- 【小程序】JAVA实现从10~50中随机生成50个数,统计出现的数字及次数,输出出现最多的次数及对应的数字,按数字升序排列。
- 数据结构中线性表的基本操作-合并两个线性表-按照元素升序排列
- 随机生成长度为100的数组,数组元素为1到10,统计出现次数最多和最少的元素
- java编程之计算16位长整型数字中0-9出现次数(从对话窗体输入数据)
- 统计出现次数最多的数据