Max Points On A Line 坐标系中一条直线上的最多点数
题目
给出一组坐标系的点,求出能连成一条直线的最多点数
解题思路
- 将坐标点 p1 的 x1 与 y1 的值,依次与后面的坐标点 pn的 xn 与 yn 做差值并相除((x1 - xn) / (y1 - yn))得出两点之间的斜率
- 若有其他坐标点 pm 与坐标点 p1 的斜率相同,则 p1 、 pn 、 pm 在一条直线上
- 有两个特殊情况
- 由于 y 的差值为除数,所以若差为 0 即为不合理数,且此时的两点是处于同一水平线上的,将此情况单独摘出,独立计算点数
- 当有相同坐标点存在时,即所有与此坐标点相关的连线点数都适用,亦可独立记重复点数,在比较最大点数时再加上去
- 记录并更新当前最大点数
- 从 p2 开始依次向后重复操作,
代码实现
class func MaxPointOnLineSolution(points:[[Int]]) -> Int{
let count = points.count
// 当坐标点数量小于3时,最多点数即为坐标点数量
if(count<3){
return count;
}
// 声明最多点数
va