WOJ -1204

WOJ -1204

1 出现次数大于一半

那么就利用普通的堆栈的思想,如果删除两个不同的元素,原来的多数元素还是多数元素,所以采取按条件入栈的方法,如果和top元素相同则入栈,否则top--,此元素也不入栈,所以最后栈顶元素就是我们要寻找的多数元素,输出即可,并且此时栈里面元素个数>1,都为多数元素

2 出现次数恰好为一半

这个时候,堆栈被pop为空,但是算法本身会将最后一个元素push进去,所以需要额外的判断操作,处理的时候都是先入栈,然后判断栈顶指针的,所以此时,栈顶指针应该是0,但是栈里面的元素还是有的,我们的多数元素只可能是栈顶或者栈顶的下一个元素

注:

数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。​全局变量一般分配在数据段。

原文地址:https://www.cnblogs.com/wangyuqin/p/6098651.html