LeetCode 149. Max Points on a Line
2016-11-01 22:46
465 查看
Problem Statement
(Source) Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.Solution
Tags:Hash Table,
Math.
Note: In Java version of pre-defined code, coordinates of points are pre-defined as integers. So I assume the same applies here in python version.
class Solution(object): def maxPoints(self, points): """ :type points: List[Point] :rtype: int """ res = 0 n = len(points) for i in xrange(n): memo = {} duplicate = 0 for j in xrange(n): if (points[j].x, points[j].y) == (points[i].x, points[i].y): duplicate += 1 elif points[j].x == points[i].x: memo['v'] = memo.get('v', 0) + 1 elif points[j].y == points[i].y: memo['h'] = memo.get('h', 0) + 1 else: k = self.slope(points[i], points[j]) memo[k] = memo.get(k, 0) + 1 res = max(res, max(memo.values()) + duplicate if memo else duplicate) return res def gcd(self, x, y): while x % y: x, y = y, x%y return y def slope(self, p1, p2): res = '' flag = 1 x = p1.x - p2.x y = p1.y - p2.y if x < 0: flag *= -1 x = -x if y < 0: flag *= -1 y = -y m = self.gcd(x, y) if flag == -1: res='-' res += (str(x/m) + '/' + str(y/m)) return res
Complexity analysis:
Time complexity: O(n2⋅gcd). For time complexity analysis of
gcd, see below reference.
References
(1) Time complexity of Euclid’s Algorithm.相关文章推荐
- [leetcode-149]Max Points on a Line(java)
- [Leetcode]149. Max Points on a Line @python
- LeetCode-149.Max Points on a Line
- leetcode 149. Max Points on a Line
- LeetCode149. Max Points on a Line
- leetcode 149. Max Points on a Line
- [LeetCode] 149. Max Points on a Line 共线点个数
- [Leetcode] 149. Max Points on a Line 解题报告
- Leetcode#149 Max Points on a Line
- Leetcode 149. Max Points on a Line
- leetcode 149. Max Points on a Line
- Leetcode: 149. Max Points on a Line
- Leetcode 149. Max Points on a Line (Hard) (cpp)
- Leetcode 149-Max Points on a Line
- 【leetcode每日一题】149.Max Points on a line
- LeetCode149:Max Points on a Line
- leetcode 149 —— Max Points on a Line
- Java for LeetCode 149 Max Points on a Line
- Leetcode 149. Max Points on a Line
- Leetcode 149. Max Points on a Line