zoukankan      html  css  js  c++  java
  • 寻找“水王”问题

    一、设计思路:因为需要只遍历一遍就要找到”水王“,所以不能通过排序算法。又因为”水王“发帖数占总帖子数的一半以上,所以可以通过计算差值的方法找出”水王“。设定一个变量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); } }

    三、结果截图

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

  • 相关阅读:
    ASP.Net Core -- 模型验证
    C# -- nameof什么意思?
    C# -- value是什么意思?
    C# -- 异常(二)
    C# -- 异常(一)
    C# -- 委托(二)
    C# -- 委托(一)
    ASP.Net Core -- Controller返回View
    ASP.Net Core -- 中间件
    ASP.Net Core -- 服务注册和管道
  • 原文地址:https://www.cnblogs.com/act-gh95/p/4520529.html
Copyright © 2011-2022 走看看