Max Points on a Line

本文探讨了如何在二维平面上找到最多共线的点数,并介绍了两种解决思路:构造方程和计算斜率。通过优化存储方式和计算流程,提高了算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://leetcode.com/problems/max-points-on-a-line/

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

思路1:一开始想着构造ax+by+c=0的方程,额,好像也可以。。。O(n^2)的复杂度。。然后在比较a、b、c都相同的个数

思路2: 判断三个点在一个线上的方法有至少2中
  1. 根据其中2个创建函数,第三个点带入
  2. 计算斜率
            方法1的效率太低,如果每两个点计算公式,在带入,时间复杂度为O(n^3),没必要
            方法2可行,构建矩阵,存储每2个点的斜率,然后每次遍历每行,以map<double,int>存储斜率个数,斜率相同,必然                 
                    属于同一行

总结:思路2整体可以,但是存储可以免去,因为可以实时计算,然后放到map里面,但复杂度没变O(n^2)            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值