// you can also use includes, for example:
// #include <algorithm>
vector<int> solution(int N, vector<int> &A) {
// write your code in C++98
//...keep record of minValue across the whole array to reach O(n+m) time complexity
vector<int> result(N, 0);
int minValue = 0;
int maxValue = 0;
for(int i = 0; i < A.size(); ++i)
{
int index = A[i]-1;
if(index == result.size()) minValue = maxValue;
else
{
if(result[index] < minValue) result[index] = minValue+1;
else result[index]++;
maxValue = max(maxValue, result[index]);
}
}
//...at last take care of the reamin less than minValue element
for(int i = 0; i < result.size(); ++i)
if(result[i] < minValue) result[i] = minValue;
//...return the result
return result;
}[codility]Max-Counters
最新推荐文章于 2022-03-05 00:15:05 发布
本文深入探讨了使用C++98语言实现高效算法优化的方法,通过实例展示如何通过巧妙的代码设计达到O(n+m)的时间复杂度。文章详细介绍了算法的核心思想、关键步骤以及具体实现细节,旨在帮助读者理解和掌握复杂问题的解决策略。

435

被折叠的 条评论
为什么被折叠?



