一个含N个整数的数组,其中一个元素出现次数 k>N/2,找出这个元素。限O(N)时间,O(1)空间。

public class FindKinN ...{
public static void main(String[] args) ...{

int[] a = ...{1,1,1,1,2,2,1,1,2,2,2,1};
int count,cur,n;
count = 0;
cur = 0;
n = a.length;
for (int i = 0; i < n; i++)
...{
if (count == 0) cur = a[i];
if (cur == a[i])
count++;
else
count--;
}
System.out.println("你要找的是:" + cur);
}
}
寻找众数算法
本文介绍了一种在O(N)时间内及O(1)空间复杂度下查找数组中超过半数出现频率的元素的方法。该算法适用于含N个整数的数组,其中一个元素出现次数大于N/2的情况。

被折叠的 条评论
为什么被折叠?



