题目描述:在平面上有n个点,(x1,y1),(x2,y2)...(xn,yn),请用最快的算法找到是否有三个点共线。
我的思路:假设以(x1,y1)为坐标原点,其它点坐标相应做加、减改变,然后再把这些点的斜率找出来,垂直的考虑进去...有相同斜率或相反数斜率的两点,就能确定存在了,如果没有,再以(x2,y2)做为坐标原点,采取同样方法,但是就可以不考虑(x1,y1)了,因为刚才已经考察过(x1,y1)、(x2,y2)两点的斜率,没有找到第三点了,以此类推。同样以(x3,y3)为坐标原点的时候,(x1,y1),(x2,y2)也不用考虑了。
PS:今年校招季早就出这个题了, 我在群里讨论了一下,但是没有正式整理过,今天突然发现草稿箱里居然躺着这样一篇东西,呵呵,发出来,大伙想想还有没有别的算法...