题目:

题解:
func maxPoints(points [][]int) (ans int) {
n := len(points)
if n <= 2 {
return n
}
for i, p := range points {
if ans >= n-i || ans > n/2 {
break
}
cnt := map[int]int{}
for _, q := range points[i+1:] {
x, y := p[0]-q[0], p[1]-q[1]
if x == 0 {
y = 1
} else if y == 0 {
x = 1
} else {
if y < 0 {
x, y = -x, -y
}
g := gcd(abs(x), abs(y))
x /= g
y /= g
}
cnt[y+x*20001]++
}
for _, c := range cnt {
ans = max(ans, c+1)
}
}
return
}
func gcd(a, b int) int {
for a != 0 {
a, b = b%a, a
}
return b
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func max(a, b int) int {
if a > b {
return a
}
return b
}








![[大模型]Phi-3-mini-4k-instruct langchain 接入](https://img-blog.csdnimg.cn/direct/dc2da995c6774ca7b9aa54bf7e52df2c.png#pic_center)






![[C][数据结构][排序][下][快速排序][归并排序]详细讲解](https://img-blog.csdnimg.cn/direct/c796ea2467cc4ed2b904f1fa55adb17f.png)



