直线上最多的点数
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
这有帮助吗?
题目链接: https://leetcode.cn/problems/max-points-on-a-line
枚举每一对点,计算它们构成的直线的斜率,然后将斜率相同的点分为一组,统计每组中点的个数,最后取所有组中点的个数的最大值作为答案
使用了哈希表来存储每个斜率对应的点的个数。由于斜率可能是一个分数,我们需要使用字符串来表示斜率。在计算斜率时,我们使用了欧几里得算法来计算两个点之间的最大公约数,以避免精度误差
具体实现:
遍历每一对点,计算它们构成的直线的斜率
将斜率相同的点分为一组,统计每组中点的个数
取所有组中点的个数的最大值作为答案
func maxPoints(points [][]int) int {
n := len(points)
if n <= 2 {
return n
}
res := 0
时间复杂度: 时间复杂度是 ,其中 是点的个数
空间复杂度: 空间复杂度是 ,算法使用了哈希表来存储每个斜率对应的点的个数