给定:很多点都有一个独特的坐标(x i ,y i )
输出:同一行上的最大点数
这是我的方法:
for i=1..n
for j=i..n
get the line determined by point[i] and point[j]
for k=1..n
check if point[k] is on this line
但似乎这种方法需要花费太多时间并且总是超过OJ系统的时间限制。
答案 0 :(得分:3)
迭代每个点,计算每个其他点的极角,对极角进行排序
这个成本为O(n ^ 2 * lgn)
答案 1 :(得分:0)
我没有实现这个,但你可以在O(n)中实现它。
使用散列图按极角存储点:Map<Double,List<Point>>
,其中Double
是角度
然后迭代地图,跟踪List<Point>
的最大长度。该列表将包含结果。
玩那个。它看起来应该有效。