Сложность алгоритма линейная.
Нахождение максимума является линейным.
Установка битов линейна.
Однако алгоритм также неверен,
если ваши целые числа не могут быть положительными.
У него также есть проблема с большими целыми числами - вы действительно
хотите выделить MAX_INT / 8 байт памяти?
Имя, кстати, заставляет меня съеживаться. IsXYZ () всегда должен возвращать bool.
Я бы сказал, попробуйте еще раз.
Исправление - у павпанчеха правильный ответ.