zoukankan      html  css  js  c++  java
  • 找水王

    找水王的题目为:

    三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

    思路:若水王的id出现的次数超过一半以上,则他一定是水王,从一组id的数组里找出现次数最多的id,每个id出现的次数相互抵消,最后剩下的id一定是水王

    代码为:

    package 找水王;
    
    public class find {
    
    public static int king(int[] a)  
    {  
        int s = a.length;
        int r = 0;// 需要查找的结果  
        int t = 0;// 出现的次数  
        for (int i = 0; i < s; i++)  
        {  
            // 如果次数等于0,重新指定结果  
            if (t == 0)  
            {  
                r = a[i];  
                t = 1;  
            }  
            else //水王的贴与其他人的贴相互抵消,剩下的一定是水王的 
            {  
                if (r == a[i])  
                {  
                    ++t;  
                }  
                else  
                {  
                    --t;  
                }  
            }  
    
        }  
    
        return r;  
    
    }  
    public static void main(String[] args) {
        int[] a = {1,2,1,2,5,7,8,2,2,2,2,4,2};  
                System.out.println("水王的ID为:"+king(a));
    }
    
    }  

    一开始对找水王没有解题思路,其实就是找出出现次数超过一半的id就是水王。

    运行结果为:

  • 相关阅读:
    uoj110
    11.28模拟赛D题解
    AT1219 歴史の研究
    P5906 【模板】回滚莫队&不删除莫队
    P4175 [CTSC2008]网络管理
    SP32952 ADAFTBLL
    CF1479D Odd Mineral Resource
    SP10707 COT2
    P4074 [WC2013] 糖果公园
    P6134 [JSOI2015]最小表示
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/10985569.html
Copyright © 2011-2022 走看看