1、输入数组的大小N,然后生成两个大小为N的数组,输入数据,这两个数组有序,然后找中位数,输出中位数结束:
#include<iostream>
using namespace std;
int main()
{
int N=0;
cin >> N;
while (N <= 0 || N > 100000)
{
cout << "please put" << endl;
cin >> N;
}
int *p = new int[N];
int *q= new int[N];
for (int i = 0; i < N; i++)
{
cin >> p[i];
}
for (int i = 0; i < N; i++)
{
cin >> q[i];
}
int i, j, k;
i = 0; j = 0; k = 0;
int m;
for (; k < N; k++)
{
if (p[i]>q[j])
{
m = q[i];
j++;
if (j >= N)
break;
}
else{
m = p[i];
i++;
if(i>=N)
break;
}
}
cout << m<<endl;
delete[]p;
delete[]q;
return 0;
}
2、输入一个数组长度为N,这个数组特点为有一个数出现的次数是一半多,输出这个数。最优解:
#include<iostream>
using namespace std;
int main()
{
int N;
cin >> N;
while (N <= 0 || N > 100000)
{
cout << "df" << endl;
cin >> N;
}
int *p = new int[N];
for (int i = 0; i < N; i++)
{
cin >> p[i];
}
int i, num,j;
num = p[0]; j = 1;
for (i = 0; i < N; i++)
{
if ( num!= p[i])
{
if (j == 0)
{
num = p[i]; j = 1;
}
else
{
j--;
}
}
else{ j++; }
}
cout << num;
return 0;
}