题目描述
给你一个数组 points
,其中 points[i] = [xi, yi]
表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。
提示:
1 <= points.length <= 300
points[i].length == 2
-104 <= xi, yi <= 104
points 中的所有点 互不相同
解题思路
遍历每个点,计算该个点与其他所有点之间的斜率,以哈希的形式记录各个斜率的出现次数,斜率出现次数最多的结点就是与该点在同一条直线上的其他点的个数
各个结点最多在一条直线上的结点的个数即为最终的结果
代码
def maxPoints(points):
answer=0
for i in range(len(points)):
temp_dict=dict()
for j in range(i+1,len(points)):
if (points[j][0]-points[i][0])==0:
temp="*"
else:
temp=(points[j][1]-points[i][1])/(points[j][0]-points[i][0])
if temp not in temp_dict:
temp_dict[temp]=1
else:
temp_dict[temp]+=1
if len(temp_dict)!=0:
b=max(temp_dict.values())
answer=max(b,answer)
return answer+1