当前位置:编程学习 > JAVA >>

编程之美_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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,