O (n log n) 시간에 수행 할 수 있습니다. 우리는 모든 교차점을 확인할 필요가 없습니다. 단지 가장 높고/낮은 x와 y 좌표를 가진 것을 찾아야합니다.
다음은 내가 생각해 낸 것입니다. 저는 우리가 같은 강연에 있다고 생각합니다. 그리고 이것은 제가 정확히 들어갈 내용입니다. 따라서이 솔루션을 사용하려면 붙여 넣기 만하지 마십시오. 좌측 결합 용
알고리즘 :
1) 점 라인 이중성 (L)에 따른 포인트로 행합니다 MX = Y + C => L * = (m, -C). O (n)
2) x 좌표로 주문하십시오. O (n log n)
3) 가장 낮은 기울기를 가진 선으로 처음 두 점의 선을 저장하십시오. 4) 점들을 통과하고 두 점 P [i]와 P [i + 1]의 선이 이전에 저장된 가장 낮은 기울기보다 낮은 기울기를 갖는 경우 그 선을 가장 낮은 기울기를 가진 선으로 저장합니다. O (n)
5) 이중성을 다시 사용하여 선을 점으로 만듭니다.O (1)
6) 해당 점의 x 좌표를 왼쪽 경계로 반환합니다. O (1)
최저 기울기가있는 선은 가장 낮은 x 좌표와의 교점을 나타냅니다. 오른쪽 경계는 동일하지만 최대 경사로 작동합니다. 상한과 하한에 대한 알고리즘을 얻으려면 다음을 결정할 수 있도록 l : y = mx + c => l * = (-c, m) (기본적으로 평면을 90도 회전)으로 이중성을 변경할 수 있습니다. 슬로프를보고 가장 낮은 교차점과 가장 높은 교차점.
가장 가파른 슬로프를 찾기 위해 선의 모든 교차점을 볼 필요는 없으며, x 좌표에 따라 서로 인접한 선을 보면 충분합니다.
세그먼트 또는 무한 선? – MBo
'평행선 없음'(일종의)은 무한한 주문입니다. * 일반 축 중 하나에 평행선이없는 경우 *는 슬로 피시가 아닌 한 *. – greybeard