Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

编程之美_006寻找发帖水王

$
0
0
// 如果每次删除两个不同的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 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>