3.7.2 每日一题
n个数中里输出出现次数大于等于n/2的数
例如:
输入:3 9 3 2 5 6 7 3 2 3 3 3
输出: 3
解题思路:遍历数组,设置tmp临时存储每个数字作比较,设置计数器统计每个数字出现的次数,因为输入中含有空格,因此每次循环+=2,设置mostcoust为n/4(n个数还有n-1个空格),找到后输出tmp-48(ASCAll码与数字差值为48)
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include <iostream>
#include <string>
using namespace std;
void Find(string str)
{
int count = 0;
int mostcount = str.size() / 4;
for (size_t i = 0; i < str.size(); i += 2)
{
int tmp = str[i];
for (size_t i = 0; i < str.size(); i += 2)
{
if (tmp == str[i])
count++;
}
if (count>=mostcount)
{
cout << tmp-48<<' ';
break;
}
count = 0;
}
}
int main()
{
string str;
getline(cin,str);
Find(str);
system("pause");
return 0;
}
运行结果
参考答案
或