Python math+heapq 切片 题解 leetcode[困难级别]:149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上

今天在公司做的这道困难级别的题目,先上题目吧,
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

示例 1:

输入: [[1,1],[2,2],[3,3]]
输出: 3
解释:
^
|
| o
| o
| o
±------------>
0 1 2 3 4
示例 2:

输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
输出: 4
解释:
^
|
| o
| o o
| o
| o o
±------------------>
0 1 2 3 4 5 6

来源:力扣(LeetCode)

分享一下思路:对于给定的一些点,找出同一条线上最多的点,那么这些点肯定有一些共同的特性,实在不懂,就拿出一张纸和笔,画出直角坐标系,x轴Y轴,针对一条线上取出的点进行研究,那么经过本人研究,一条线上的那些点对应的Y轴坐标差/X轴坐标差的正切值tan(x)都相同,也就是弧度都相同,找出这个规律。
然后,遍历所有的点,并把每个点(比如第一个(1.1))以作为基础点,其他的点与其相减取atan(y差,x差)弧度值,得出所有的值,并且把结果统计到一个列表,取出最大的相同的atan(y,x)弧度值的次数,那么,大功告成,已经找出最大有多少个点在一条线上了!(当然得包含自身这个点!
今天在公司码的代码,拍的照,不好意思,附上图了!
Python math+heapq 切片 题解 leetcode[困难级别]:149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上
运行结果:

不好意思,代码有点打码:
x_dis = po[j][0]-po[i][0]

最下方一行被博客挡住为:.format(s[0]+1)
Python math+heapq 切片 题解 leetcode[困难级别]:149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上
最大四个点!

努力才能成为想成为的人,人生从来不晚!