给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。
示例 1:
输入:points = [[1,1],[2,2],[3,3]] 输出:3
示例 2:
输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出:4
提示:
-
1 <= points.length <= 300 -
points[i].length == 2 -
-104 <= xi, yi <= 104 -
points中的所有点 互不相同
先确定两个点,然后再选一个点,计算三个点的斜率来查看是否在同一条直线。
\$(y_1 - y_2) / (x_1 - x_2) = (y_2 - y_3)/(x_2 - x_3)\$
等价于
\$(x_2 - x_3)* (y_1 - y_2) = (x_1 - x_2) * (y_2 - y_3)\$
这样就避免计算除法。
- 一刷
-
link:{sourcedir}/_0149_MaxPointsOnALine.java[role=include] - 二刷
-
link:{sourcedir}/_0149_MaxPointsOnALine_2.java[role=include]

