Если вы сортируете свои элементы по более низкому x-местоположению, вы можете пропустить все элементы до определенной точки.Если у вас есть второй список с верхним x-местоположением, вы знаете, когда закончите.
Другая идея: создать сетку, возможно, разбивающую всю область на 100x100 частей.Теперь выясните, в каких частях вашей сетки фигура перекрывается:
5
4
3 xx
2 xxxx
1 xx
0
0 1 2 3 4 5
Для этой фигуры это будет (1,1), (1,2) (2,2) (2,3) Карта x * y Lists теперь будет содержать эту форму s для 4 местоположений (1,1) -> s, (1,2) -> s, ...
Если вы редковставки / удаления, но часто сравнения, это ускорит ваш поиск.Вы бы посещали только фигуры, связанные с определенной ячейкой, и исследовали точные координаты для них.