Поиск алгоритма без «грубой силы» для удаления пересекающихся областей коллекции Rects

У меня есть коллекция Rects размера n, большинство из которых пересекаются. Я хотел бы удалить пересечения и сократить пересекающиеся Rects в меньшие непересекающиеся rects.

Я мог бы легко перебрать решение, но я ищу эффективный алгоритм.

Вот визуализация:

Оригинал:

Обработанный:

В идеале подпись метода должна выглядеть так:

public static List<RectF> resolveIntersection(List<RectF> rects);

выходной сигнал будет больше или равен входному значению, где выходной сигнал разрешает приведенное выше визуальное представление.

Ответы на вопрос(3)

Ваш ответ на вопрос