Привет. Есть задача, дано список целых чисел, для каждого пара последовательных

элементов найти ответ на : встречал ли это пара ранее (то есть до этих пар если обрабатываем элементов с начала список до конца). значение чисел от 1 до 100 000 .

Можно это реализовать без предварительно сортироват пара элементов?

За O(log(n)) для каждого поиска? Хотел использовать heap data structure, но оказывается там удаление/добавление O(log(n)) , но поиск O(n) в худшем случай.

Хэш таблица — не хочу, потому что реализую в Си, там не хочу реализовать хэш таблицу).

12 ответов

40 просмотров

А что за пар элементов? Это что за газ такой?

В дерево клади

Khurshid- Автор вопроса
Evgenii Zheltonozhskii🇮🇱
В дерево клади

segment tree ? но там (x,y) пара как кладу?

А в чём проблема отсортировать? Сложность же будет такая же

Khurshid- Автор вопроса
Антон Novikov
А в чём проблема отсортировать? Сложность же будет...

Не умею реализовать quick sort in C ), там есть свои грабли, если меньше 16 элементов нужен insertion sort, иначе по рекурсия идти... Или наоборот если глубина рекурсия больше лимит=10 или 15, нужен insertion sort, точно не помню что-то было

Khurshid
Не умею реализовать quick sort in C ), там есть с...

Он в библиотеке готовый есть см. qsort

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

Стандарт не гарантирует, но приличные имплементации обычно гарантируют

Khurshid
А он гарантирует O(n logn)?

Не гарантирует, ибо qsort это амортизированная n*log(n), но фактически вероятность получить вырожденный случай n^2 сверх мала.

Khurshid- Автор вопроса
Ignat Loskutov
Стандарт не гарантирует, но приличные имплементаци...

Стандарт c++ гарантирует O(n logn) для std::sort в худшем случай. Но но есть история libc++ до 14 версий это сломано))

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

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

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλ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
Карта сайта