数组中出现次数超过一半的数字(C/C++)
在解决算法问题时,经常会遇到需要找到一个数组中出现次数超过一半的数字的情况。本文将介绍一种高效的解决方法,并提供相应的C/C++源代码。
算法思路:
为了找到数组中出现次数超过一半的数字,我们可以利用摩尔投票算法(Moore Voting Algorithm)。该算法的基本思想是,通过两两抵消不同的数字,最终剩下的数字就有可能是出现次数超过一半的数字。
具体步骤如下:
- 初始化候选数字candidate和对应的计数count为0。
- 遍历数组中的每个元素:
- 如果count为0,将当前元素设置为候选数字candidate。
- 如果当前元素与候选数字candidate相同,增加计数count。
- 如果当前元素与候选数字candidate不同,减少计数count。
- 最终剩下的候选数字candidate就是出现次数超过一半的数字。
C/C++源代码实现如下:
#include <iostream>