WOJ 1204 继续找相同

原题的链接:继续找相同-WOJ1204

Description

有 n 个整数, 其中有且仅有一个整数出现了 >= n/2.0 次 (n<=500000)

Input
每组数据第一行是 n, 然后接下来一行是 n 个整数, 请读入到 EOF
Output
输出每行一个整数, 即要找的这个数
Sample Input
9
5 5 5 5 5 1 2 3 4
Sample Output
5


解题思路,其实可以排序的,用C++,sort()函数可以快速搞定,之后可以找中位数便是所求。


解题代码请猛击:WOJ1204.c


解题思路之二:

用栈来解决。设置两个数组,其中一个是要求输入的数组a。另一个数组b用于保存含有相同的元素的序列。

先把数组的第一个值压入栈底,在看第二个数是不是和第一个数是相同的。如果相同则进栈,否则的话栈底元素出栈继续执行。

注意边缘情况数组里面只有两个不同的元素。这个时候b[0]和b[1]保存的是不同的元素。再次扫描可得。解法比较复杂,建议第一种比较好!

解题代码请猛击:WOJ1204.c



你可能感兴趣的:(OJ)