// 如果每次删除两个不同的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; } }
输出结果:
1
作者:adam_zs 发表于2013-1-14 16:51:39 原文链接
阅读:0 评论:0 查看评论