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

    编程思路: 

          水王是发帖最多的人,如果用传统的思想来遍历去计数,计算每个id出现多少次再去比较固然能算出来,可是时间复杂度高。我们转换思路重新分析这道题。

      水王的特点为:(1)每贴必回(2)水王的发贴数超过总贴数的一半;

        从头开始遍历,对可能成为水王的人的id进行计数,如果后边的跟他相同就加一,不同就减一,如果为0就重新选择水王。因为水王发的帖子大于一半,所以剩下的就是水王。

    import java.util.Scanner;
    /*
     * 寻找水王
     */
    public class ShuiWang {
        public static void main(String[] args) {
            int[] a = null;
            Scanner sc = new Scanner(System.in);
            System.out.println("帖子总个数:");
            int sum = sc.nextInt();
            a = new int[sum];
            System.out.println("输入每个帖子的作者:");
            for(int i = 0;i < sum;i++)
            {
                a[i] = sc.nextInt();
            }
            sc.close();
            int n = 0;
            int id = -1;
    
    
            
            for(int i=0;i<a.length;i++)
            {
                if(n==0)
                {
                    id=a[i];
                    n=2;
                }
                else
                {
                    if(id==a[i])
                    {
                        ++n;
                    }
                    else
                    {
                        --n;
                    }
                }
            }
            System.out.println("水王的ID是 : " + id);
            
        }
    
        
    }

    程序执行结果:

     

    总结:

    要学会分析问题,发现“水王”的特点,转换思考方式。

    没有实现随机生成发帖的id。

  • 相关阅读:
    腾讯//最长回文子串
    腾讯//最长回文子串
    马拉车算法
    马拉车算法
    简单实操_Github创建本地仓库及SSH KEY
    Linux5_磁盘 分区 挂载点的理解
    Linux4_手动分区方案
    Linux3_什么是Uboot
    stdin stdout stderr 标准I/O流
    卢克,学着去读源代码
  • 原文地址:https://www.cnblogs.com/bai123/p/7010673.html
Copyright © 2011-2022 走看看