平面上N个点求斜率最大两个点
1.根据X将N个点排序
2.最大的斜率为max(p[i], p[i+1])
可以证明如果有ABC三个点则AB与BC的斜率一个大于AC另一个则小于AC, k3 = (c - b)/(c - a)k2 + (b -a)/(c-a)k1;
通过反正法可以证明k3在k1和k2之间
p[i], p[i + k]斜率在(p[i ], p[i + 1]) 和(p[i + 1] , p[i + k])之间,然后递归推出最大的斜率为max(p[i], p[i + 1]);
先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i<n-2。
复杂度Nlog(N)。
无论多少个点都可以任意选三个点组成一个三角形,那么斜率最大的边肯定不是通过相邻的两个点,以此可知斜率最大的直线一点是由两个相邻的点画出的。
无论多少个点都可以任意选三个点组成一个三角形,那么斜率最大的边肯定不是通过相邻的两个点,以此可知斜率最大的直线一点是由两个相邻的点画出的。
先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i<n-2。
复杂度Nlog(N)。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i<n-2。
复杂度Nlog(N)。