Ввод: массив только для чтения из N элементов, содержащих целочисленные значения от 1 до N (некоторые целочисленные значения могут появляться более одного раза!). И область памяти фиксированного (10, 100, 1000 и т.д. - не в зависимости от N).
Как сказать в O (n), если массив представляет собой перестановку?
- То, что я достиг до сих пор (ответ показал, что это не хорошо): -
- Я использую ограниченную область памяти для хранения суммы и продукта массива.
- Я сравниваю сумму с N * (N + 1)/2, а продукт с N!
Я знаю, что если условие (2) истинно, то я может иметь перестановку. Мне интересно, есть ли способ доказать, что условие (2) достаточно, чтобы сказать, есть ли у меня перестановка. Пока я этого не понял...
Забастовкa >