mycode 不会。。。。
参考
因为每次遍历一个点,也就是i的时候,都是新建的一个lines,所以也就是考虑了k相同b不同的情况
最后gcd函数就求最大公约数,来解决斜率精度的问题
class Solution(object): def maxPoints(self, points): """ :type points: List[List[int]] :rtype: int """ N = len(points) res = 0 for i in range(N): lines = collections.defaultdict(int) duplicates = 1 for j in range(i + 1, N): if points[i][0] == points[j][0] and points[i][1] == points[j][1]: duplicates += 1 continue dx = points[i][0] - points[j][0] dy = points[i][1] - points[j][1] delta = self.gcd(dx, dy) lines[(dx / delta, dy / delta)] += 1 res = max(res, (max(lines.values()) if lines else 0) + duplicates) return res def gcd(self, x, y): return x if y == 0 else self.gcd(y, x % y)