| Programmer's Blood Bath ( @ 2007-06-30 12:13:00 |
const std::vectorjoin(const std::vector & v1, const std::vector & v2) { ... }
В v1 и v2 содержатся простые int'ы, необходимо на выходе получить вектор, который содержит неповторяющиеся числа из v1 и v2. Решение, которое я предложил через 5 секунд - использовать std::set или std::sort было отвергнуто сразу с комментариями, что вот вы мол собираетесь использовать STL контейнеры и алгоритмы, а это очень неэффективно. Не пытался спорить об эффективности, это было бесполезно, просто отправился подумать. Вернулся с простеньким решением на основе binary tree и был послан домой, чтобы не отвлекать больше умных дядек от собеседования с другими кандидатами. Tree им тоже не понравилось, попытки комментировать и предложить более
эффективные решения на основе RB tree были также посланы лесом.
К сожалению не было возможности задать уточняющие вопросы вроде являются ли вектора отсортированными, есть ли повторяющиеся значения в каждом из векторов и т.п. Поэтому мои попытки решить это сводились к наихудшему случаю - вектора неотсортированы, могут быть разной длины, могут содержать повторяющиеся числа. Что важно - расход памяти или скорость, впрочем, тоже не известно.
Вот собственно вопрос - как бы вы ее решили?