寻找发帖“水王”

来源:互联网 发布:linux 开机启动 编辑:程序博客网 时间:2024/06/05 10:47

题目: “水王”发帖的数目超过了所有帖子的一半,有各个帖子的作者ID,求这个水王的ID

或者:给你一个数组,让你返回一个值,这个值在该数组中占得个数,超过数组总的个数的一半以上。比如一个数组有10个数[2, 14 , 2 , 3 , 4 , 2 , 2 , 2 , 2 , 14 ]。这个数组中数字2一共出现6次,那么就返回数字2。为了简化问题,可以认为,对于给定的数组,这个数一定存在。


解法:

1.“虚拟栈

顺序将元素放进去,x进来和栈的top比,如果相等,压入栈中,如果不等,将top弹出栈。

2. 简单法

用两个变量,相当于模拟栈的方法,一个变量m相当于存当前栈的top,另一个变量count。 顺序scan数组x,

if m==-1

   m = x

   count = count + 1;

else if x==m

count = count +1;

else if x!= m

if count > 0

count = count -1;

if count==0

m = -1

else m = m;

else if count == 0;

m = x;

count = 1;

3. Hash

4. 排序






0 0
原创粉丝点击