平面n点,最快确定是否有三点共线——一道阿里笔试题目

题目描述:在平面上有n个点,(x1,y1),(x2,y2)...(xn,yn),请用最快的算法找到是否有三个点共线。

 

我的路:假设以(x1,y1)为坐标原点,其它点坐标相应做加、减改变,然后再把这些点的斜率找出来,垂直的考虑进去...有相同斜率或相反数斜率的两点,就能确定存在了,如果没有,再以(x2,y2)做为坐标原点,采取同样方法,但是就可以不考虑(x1,y1)了,因为刚才已经考察过(x1,y1)、(x2,y2)两点的斜率,没有找到第三点了,以此类推。同样以(x3,y3)为坐标原点的时候,(x1,y1),(x2,y2)也不用考虑了。


PS:今年校招季早就出这个题了, 我在群里讨论了一下,但是没有正式整理过,今天突然发现草稿箱居然着这样一篇东西,呵呵,发出来,大伙想想还有没有别的算法...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值