Загадка на собеседовании: массив size-n содержит числа из [i, i + n)

Учитывая несортированный массив чисел, напишите функцию, которая возвращает истину, если массив состоит из последовательных чисел.

Примеры:

  1. Если массив равен {5, 2, 3, 1, 4}, тогда функция должна возвращать истину, поскольку массив имеет последовательные номера от 1 до 5.

  2. Если массив равен {83, 78 , 80, 81, 79, 82}, тогда функция должна вернуть истину, потому что массив имеет последовательные номера от 78 до 83.

  3. Если массив равен {34, 23, 52, 12, 3}, тогда функция должна возвращать false, потому что элементы не являются последовательными.

  4. Если массив равен {7, 6, 5, 5, 3, 4}, тогда функция должна возвращать false, потому что 5 и 5 не являются последовательными.

Я придумал следующий алгоритм:

  1. найти максимальное и минимальное значение массива

  2. max-min + 1 должно быть размером массива

  3. проверить наличие дубликатов

  4. проверить все последовательные числа между ними

Как я могу достичь 4-го пути? (сложность должна быть O (n) )

Другие предложения приветствуются.

8
задан garima 24 March 2011 в 18:12
поделиться