#include <iostream>
#include <algorithm>
#define MAX_SIZE 10000
using namespace std;
void first_way(int *arr, int n)
{
int map[MAX_SIZE] = { 0 };//这里元素最大不超过9999,可以按需求放大一些
for (size_t i = 0; i < n; i++)
{
map[arr[i]]++;
}
int main_elem = 0;
for (size_t i = 0; i < MAX_SIZE; i++)
{
if (map[main_elem] < map[i]) main_elem = i;
}
if (map[main_elem] > n / 2) cout << main_elem << endl;
else cout << -1 << endl;
}
void sec_way(int *arr, int n)
{
sort(arr, arr + n);
int count = 1, max_count = 1;
int main_elem = arr[0];
for (size_t i = 1; i < n; i++)
{
if (arr[i] != arr[i - 1])
{
if (count > max_count)
{
max_count = count;
main_elem = arr[i - 1];
}
count = 0;
}
count++;
}
if (count > n / 2) cout << arr[n - 1] << endl;
if (max_count > n / 2) cout << main_elem << endl;
else cout << -1 << endl;
}
int main()
{
int arr1[8] = { 0, 5, 5, 3, 5, 7, 5, 5 };
int arr2[8] = { 0, 5, 5, 3, 5, 1, 5, 7 };
cout << "第一个数组测试:" << endl;
first_way(arr1, 8);
sec_way(arr1, 8);
cout << "第二个数组测试:" << endl;
first_way(arr2, 8);
sec_way(arr2, 8);
return 0;
}
第一个功能的函数:
SqString SubStr(SqString s,int i,int j)//求子串第二个功能的函数:
int SubPosition(SqString s,SqString t)