编程之美_006寻找发帖水王
[java]
// 如果每次删除两个不同的ID,那么剩下的ID列表中,“水王”ID出现的次数仍然超过总数的一半。看到 这一点后,就可以通过不断重复这个过程,
//把ID列表中的ID总数降低(转化为更小的问题),从而得到 问题的答案
public class Test_008
{
public static void main(String[] args)
{
int[] array =
{
1, 2, 5, 7, 8, 1, 1, 1, 1, 4, 1
};
System.out.println(find(array));
}
// 每次从数组中删除两个不同的数,不断重复这个过程
// 算法中当然不是真的删除数,而是用一个计数器巧妙的实现“删除”
public static int find(int[] array)
{
int size = array.length;
int result = 0;// 需要查找的结果
int times = 0;// 出现的次数
for (int i = 0; i < size; i++)
{
// 如果次数等于0,重新指定结果
if (times == 0)
{
result = array[i];
times = 1;
}
else
{
if (result == array[i])
{
++times;
}
else
{
--times;
}
}
}
return result;
}
}
输出结果:
[java]
1
补充:软件开发 , Java ,