Учитывая вектор целых чисел, мне нужно выяснить, существует ли три вектора a, b, c
в векторе, таких как a < b< c
и v[a] < v[c] < v[b]
.
Мой подход до сих пор был следующим.Во-первых, я забываю о a и нахожу для каждого числа в векторе минимум v [i], который находится слева от этого элемента.Я храню эту информацию в другом массиве.Затем я применяю сортировку слиянием, и когда я достигаю точки пересечения двух элементов, я проверяю, мог ли правый элемент быть c, а левый b.Однако мне также нужно проверить, могут ли другие элементы, которые пересекаются с правильным элементом, быть b, и это слишком сильно увеличивает временную сложность.Мне нужно, чтобы он был максимально линейным.Не могли бы вы дать мне подсказку о том, как действовать?
РЕДАКТИРОВАТЬ: Простите, название не было хорошо раньше.Мне нужно, чтобы a
EDIT2: Ограничение : я не могу использовать структуры данных, кроме векторов.И алгоритм должен быть основан на методе «разделяй и властвуй» .