• java课程课后作业190530之找水王


      从题目中我们可以看出,水王有着相当严苛的条件才可以成为,那就是必须拥有一半的评论量才可以当上水王。当然这就是破题的关键,最简单的算法当然是用O(N平方)的复杂度的那种算法,但显然,我们需要的不是这种。水王在数量上是最多的。编程之美中提供了这样的解决方法:如果下一个数字与前一个数字相同,就将出现次数加1,不同就将出现次数减1。改成这样时,不管事先是否知道水王是出现次数最多的,统计到最后时,都会发现留有次数的是水王。调换几个数字的顺序来验证这个一般性的想法,会发现这个想法是对的。将这个想法变成代码就得到了这题的最优解法了。

    Type Find(Type* ID, int N)
    {
        Type candidate;
        int nTimes, i;
        for(i = nTimes = 0; i < N; i++)
        {
            if(nTimes == 0)
            {
                 candidate = ID[i], nTimes = 1;
            }
            else
            {
                if(candidate == ID[i])
                    nTimes++;
                else
                    nTimes--;
    
            }
    
        }
        return candidate;
    }
  • 相关阅读:
    javascript 犀牛书
    Hmtl/css
    SQL Server 查询中使用Union或Union All后Order by排序无效(嵌套查询乱序)
    CSS 动画
    CSS 文字排版
    CSS 太极图
    Amazon Products 服务费估算
    CSS3 结构伪类选择器
    JS 执行机制
    vue 生命周期函数的学习
  • 原文地址:https://www.cnblogs.com/heiyang/p/11005786.html
Copyright © 2020-2023  润新知