题目: 中位数
题目来自ccf
问题描述
在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
我的代码:
#include
using namespace std;
int main()
{
int n;
cin>>n;
int* nums = new int[n];
int i, num;
for (i = 0; icin>>num;
nums[i] = num;
}
int j, more, less, flag = 0;
for (i = 0; imore = 0; less = 0;
for (j = 0; jif (j == i) { continue; }
if (nums[j] > nums[i]) {
more++;
} else if(nums[j]less++;
}
}
if (more == less) {
flag = 1;
printf("%d", nums[i]);
break;
}
}
if (!flag) {
printf("-1");
}
return 0;
}