这是一个面试题:“找到给定集合中所有共线的点”。
据我理解,他们要求打印位于同一直线上的点(每两个点总是共线的)。我建议如下操作:
1.引入两种类型
2.创建多映射:
最后,多映射包含行作为键,每行的共线点列表作为其值。
复杂度为O(N^2)。有意义吗?是否有更好的解决方案?
据我理解,他们要求打印位于同一直线上的点(每两个点总是共线的)。我建议如下操作:
1.引入两种类型
Line
(双精度对)和Point
(整数对)。2.创建多映射:
HashMap<Line,List<Point>)
3.循环遍历所有点对,并针对每个点对:计算连接点的Line
,并将该行与这些点添加到多映射中。最后,多映射包含行作为键,每行的共线点列表作为其值。
复杂度为O(N^2)。有意义吗?是否有更好的解决方案?