Привет. Https://Leetcode.Com/Discuss/Interview-Question/309656/Google-Reorder-Array-According-To-The-Given-Indexes/ Возникла в коде аналогичная задача, единственный важный нюанс менять массив

индексов нельзя (ну и массив значений не числа)
И в общем я попробовал решить ее в таких условиях и у меня не получилось (в итоге я забил и сделал за O(n)).
Но осталось любопытно это вообще возможно? Если нет то как доказать что невозможно.

8 ответов

25 просмотров

Вы имеете в виду O(n) по времени или по памяти?

Arelav- Автор вопроса

Прочитайте пожалуйста описание по ссылке. Хочется решить за линию по времени и константу по памяти, с озвученным условием

Arelav
Прочитайте пожалуйста описание по ссылке. Хочется ...

Вы сейчас отредактировали своё сообщение, и исправили "за O(n)" на "за O(n) по памяти". Об этом и был вопрос)

Arelav- Автор вопроса
Степан
Вы сейчас отредактировали своё сообщение, и исправ...

Ну да, я подумал мб это было непонятно, просто все решения за линию по времени, поэтому мне казалось что подразумевается по памяти

Arelav
Ну да, я подумал мб это было непонятно, просто все...

Думаю, за единицу по памяти тут не получится, потому что запрос вида «Поставь число, которое в начале было на позиции a[x1], на позицию x2» Вынуждает нас хранить где-то изначальный элемент a[x2] до тех пор, пока мы не встретим запрос «Поставь число, которое в начале было на позиции a[x2], на позицию a[x3]» Если мы хотим O(1) памяти, мы должны выполнять запрос с присваиванием a[x2] сразу после запоминания a[x2]. Но найти такой запрос можно только с помощью обратных индексов или перебора за квадрат, что в наши ограничения не укладывается. В оригинале же эта проблема решается только тем, что нужные нам O(n) памяти уже выделены.

Arelav- Автор вопроса
Степан
Думаю, за единицу по памяти тут не получится, пото...

Не, это как раз легко, мы в рамках циклической перестановки можем расставить все правильно, проблема с тем как перейти к следующей такой перестановке

Arelav- Автор вопроса

Ну я к такому же выводу пришел, но хотелось бы более формально

Arelav
Ну я к такому же выводу пришел, но хотелось бы бол...

Ну, для алгоритма поиска всех перестановок нам нужен массив used, это уже O(n) памяти. Даже чтобы перейти к следующей перестановке, очевидно, он тоже нужен

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта