码迷,mamicode.com
首页 > 其他好文 > 详细

数字之魅——寻找发帖水王

时间:2015-07-26 17:26:37      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:寻找发帖水王   扩展   

寻找发帖水王这个题目给了我很大的启发,同时开阔了视野,往往在解决这类型问题的时候第一想法都是先排序再计算。而本题却给出了一个非常好的思路,时间复杂度为O(N)。

它还有一个扩展问题,但是我在网上看了几篇有的写的考虑不周全,有的写的逻辑不是很清楚,这里我也根据思考和查阅,给出我自己的解法。

typedef int Type; //给出Id的一个抽象
Type candidate[3] = {0}; //说明传的这个参数前要初始化。
void find3(Type* ID,int N,Type* candidate){
    int i;int nTimes[3] = {0};
    for(i=0;i<N;i++){
        if(nTimes[0] == 0){
            if(candidate[1] == ID[i]){
                nTimes[1]++;continue;
            }
            else if (candidate[2] == ID[i]){
                nTimes[2]++;continue;
            }
            candidate[0] = ID[i];
        }
        else if(nTimes[1] == 0){
            if(candidate[0] == ID[i]){
                nTimes[0]++;continue;
            }
            else if (candidate[2] == ID[i]){
                nTimes[2]++;continue;
            }
            candidate[1] = ID[i];
        }
        else if(nTimes[2] == 0){
            if(candidate[0] == ID[i]){
                nTimes[0]++;continue;
            }
            else if (candidate[1] == ID[i]){
                nTimes[1]++;continue;
            }
            candidate[2] = ID[i];
        }
        else if(candidate[0] == ID[i])
            nTimes[0]++;
        else if(candidate[1] == ID[i])
            nTimes[1]++;
        else if(candidate[2] == ID[i])
            nTimes[2]++;
        else{
            nTimes[0]--;
            nTimes[1]--;
            nTimes[2]--;
        }
    }
}

这里我采用参数了作为返回值结果,一方面因为很多时候会出现下面这种情况:

Type* find3(Type* ID,int N){
    //...
    int candidate[3] = {0};
    //...
    return candidate;
}

这样函数退出结果就没有了,candidate指向了栈的某个未知区域了。
或者
Type* find3(Type* ID,int N){
//…
int* candidate = new int[3];
//…
return candidate;
}
在find3中new,但是在哪里去释放呢。我还是比较喜欢在哪里new就在哪里delete。
最后,在判断nTimes[0] == 0的时候还要判断ID[i]与其他candidate是否相等的情况,所以我要求candidate要先初始化。

版权声明:本文为博主原创文章,未经博主允许不得转载。

数字之魅——寻找发帖水王

标签:寻找发帖水王   扩展   

原文地址:http://blog.csdn.net/z702143700/article/details/47068909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!