class Solution:
def maxPoints(self, points: List[List[int]]) -> int:
N = len(points)
answer = 1
for i in range(N-1):
slopes = defaultdict(int)
x1, y1 = points[i]
for j in range(i+1, N):
x2, y2 = points[j]
slope = 'lim' if x1 == x2 else (y2-y1) / (x2-x1)
slopes[slope] += 1
answer = max(answer, slopes[slope] + 1)
return answer
O(N*N)
O(N)