我被问到一个面试问题,以找出阵列元素中不同绝对值的数量.我想出了以下解决方案(在C++中),但是面试官对代码的运行时效率不满意.
for循环执行A.size()时间.但是我不确定STL的效率std::find(在更糟糕的情况下,它可能是O(n)这样的代码O(n²)吗?代码是:
int countAbsoluteDistinct ( const std::vector<int> &A ) {
using namespace std;
list<int> x;
vector<int>::const_iterator it;
for(it = A.begin();it < A.end();it++)
if(find(x.begin(),x.end(),abs(*it)) == x.end())
x.push_back(abs(*it));
return x.size();
}
Run Code Online (Sandbox Code Playgroud)