寻找“水王”问题

一、设计思路:因为需要只遍历一遍就要找到”水王“,所以不能通过排序算法。又因为”水王“发帖数占总帖子数的一半以上,所以可以通过计算差值的方法找出”水王“。设定一个变量n为水王与其他人发帖数量的差值。先假设水王的ID为第一个人的ID,开始遍历,若该帖子的ID与“水王“相同,则n+1,若该帖子的ID与“水王“不同,则n-1。当n<0时,“水王”的ID变为当前帖子的ID。遍历完成后,就找到“水王”的ID与水王发帖数与其他人发帖数的差值。

二、代码

public class main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String a[]=new String[]{"ab","ab","ab","b","ab","ab","abc","bc","ab","a"};
        String b=a[0];
        int i=0,n=0;
        for(i=0;i<10;i++)
        {
            if(a[i]==b)
            {
                n=n+1;
            }
            else
            {
                n=n-1;
                if(n<0)
                {
                    b=a[i];
                    n=1;
} } } System.out.print(b); } }

三、结果截图

四、总结:这次这个问题实现并不是很难,难的是设计的算法如何只执行一次遍历。通过这种比较差值的方法可以比较快速的找到发帖最多的"水王",并且十分简单。

posted @ 2015-05-21 18:34  act_gh95  阅读(151)  评论(0编辑  收藏  举报