数据结构题库
181 / 2332013 · 解答题

2013 年 408 真题

2013 年 408 数据结构 · 第 41 题

选中文字高亮 · 下划线

已知一个整数序列  A=(a0,a1,,an1)  ,其中  0ai<n (0i<n)  。

若存在  ap1=ap2==apm=x  且  m>n/2 (0pk<n,1km)  ,则称  x  为  A  的主元素。

例如  A=(0,5,5,3,5,7,5,5) ,则  5  为主元素;又如  A=(0,5,5,3,5,1,5,7)  ,则  A  中没有主元素。

假设  A  中的  n  个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出  A  的主元素。若存在主元素,则输出该元素;否则输出  1  。要求:

(1) 给出算法的基本设计思想。

(2) 根据设计思想,采用 C、C++ 或 Java 语言描述算法,关键之处给出注释。

(3) 说明你所设计算法的时间复杂度和空间复杂度。