*[codility]MaxCounters

http://codility.com/demo/take-sample-test/maxcounters

简单题。注意要记录两个max,一个是最大值,一个是已经生效的最大值。

// you can also use includes, for example:
// #include <algorithm>
vector<int> solution(int N, vector<int> &A) {
    // write your code in C++98
    int max_val = 0;
    int effective_max = 0;
    vector<int> ans(N);
    for (int i = 0; i < A.size(); i++) {
        if (A[i] <= N) {
            int idx = A[i] - 1;
            if (ans[idx] < effective_max)
                ans[idx] = effective_max;
            ans[idx]++;
            if (ans[idx] > max_val) {
                 max_val = ans[idx];   
            }
        }
        else {
            effective_max = max_val; 
        }
    }
    for (int i = 0; i < N; i++) {
        if (ans[i] < effective_max)
            ans[i] = effective_max;
    }
    return ans;
}

  

posted @ 2013-11-14 14:59  阿牧遥  阅读(520)  评论(0编辑  收藏  举报