Мне задали вопрос на собеседовании, чтобы найти количество различных абсолютных значений среди элементов массива. Я предложил следующее решение (на C ++), но интервьюеру не понравилась эффективность времени выполнения кода.
for
выполняется A.size ()
раз. Однако я не уверен в эффективности STL std :: find
(в худшем случае это могло быть O (n)
, так что этот код O (n²)
? Код:
int countAbsoluteDistinct ( const std::vector &A ) {
using namespace std;
list x;
vector::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();
}