如何在O(n)内,找到一条直线,所有的点到直线的垂直距离(纵坐标相减的值)不超过1直线方程可以写做y kx + b
如何在O(n)内,找到一条直线,所有的点到直线的垂直距离(纵坐标相减的值)不超过1
直线方程可以写做y = kx + b 对于CF到CE的线集,设其与线段EF的交点为x0,y0,则有x0 = xb,y0 = yb+c,c满足-1<=c<=1,则 k = (yb-ya+c-1)/(xb-xa) b = ya - xa*k = ya - xa*(yb-ya+c-1)/(xb-xa) 则上述k,b只与c有关,接下来遍历除A、B以外的n-2个点,分别求满足条件的c的范围,加上范围-1<=c<=1,一共n-1个范围,如果有交集,则存在这样的直线,如果没有则不存在,复杂度都是O(n)的 (3)在(2)中没有考虑第5种,是在直线CE、DF之间且CD、EF交点不是C、D、E、F的直线集合,因为如果存在一条这样的直线满足条件,则必然在(2)中存在两条与之平行的分别过C、F点(或D、E点)的直线,则这两条平行线中必然有一条也能满足题设条件!