Добрый день. Может кто подсказать, пожалуйста? Дан массив натуральных чисел А,

нужно найти такие пары индексов j > i: A[j] - A[i] = j - i за линейную сложность, используя хеширование

9 ответов

10 просмотров

Если надо найти все, то либо квадрат (так как для массива 1,2,3,4,...,n будет n*(n-1)/2 пар). Либо переопределить лист) В начале arr.groupByIndexed{idx,val->val-idx to idx}. Потом переопределить лист) Тогда можно лист сделать за линию. Возвращать по индексу из него за logn

если ограничения на A[i] в рамках 1e6 то можно хеш функцию даже не делать а определить пустой массив размером в максимальный A{I}

Vladimir Mokeev
Если надо найти все, то либо квадрат (так как для ...

За 1 проход по массиву: превращаем каждое его значение в хэш таблицу где ключ это A[i]-i, а значение - динамический массив из i. Если ещё где то будет такая же разность - получаем сразу доступ к ячейке с нужными элементами и выводим пары текущего индекса с теми что внутри уже есть. А в конец потом ещё i допишем

Vladimir Mokeev
Все пары - это квадрат

Все проверки это квадрат. Но можно сделать не все проверки)

Vladimir Mokeev
Все пары - это квадрат

А найти все равные все ещё за n

Дон-Кинг Автор вопроса
Павлик Ливаткин
За 1 проход по массиву: превращаем каждое его знач...

Да, так работает, спасибо. Только нужно итоговое количество пар разделить пополам, чтобы одни и те же пары не учитывать дважды.

Дон Кинг
Да, так работает, спасибо. Только нужно итоговое к...

Неа. Я сформулировал довольно четко: выводим пары текущего индекса с теми что уже доступны по ключу

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

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

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