Представьте, что у вас есть std :: list
с набором значений в нем. Для демонстрации мы скажем, что это просто std :: list
, но в моем случае это на самом деле двумерные точки. В любом случае, я хочу удалить одну из пары int
s (или точек), которые удовлетворяют некоторому критерию расстояния. Мой вопрос заключается в том, как подойти к этому как к итерации, которая не выполняет больше операций O (N ^ 2).
Пример
Источник - это список int
s, содержащий:
{16, 2, 5, 10, 15, 1, 20}
Если бы я дал этому критерию расстояния из 1
(т.е. ни один элемент в списке не должен находиться в пределах 1
других), я хотел бы получить следующий результат:
{16, 2, 5, 10, 20}
, если я повторял вперед или
{20, 1, 15, 10, 5}
, если я повторял в обратном направлении
, я чувствую, что должен быть какой-то отличный способ сделать это, но я застрял в этом двойном цикле итераторов и пытаюсь стереть элементы во время итерации по списку.