[LeetCode] Max Points on a Line
2014-08-15 14:56
309 查看
Max Points on a Line Total Accepted: 16037 Total Submissions: 148156 My Submissions
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
注意考虑没有斜率的情况需要特殊考虑,还要考虑有重复点的情况
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
注意考虑没有斜率的情况需要特殊考虑,还要考虑有重复点的情况
public class MaxPointsOnALine { static class Point { int x; int y; Point(){ x = 0; y = 0; } Point(int a, int b){ x = a; y = b; } } public int maxPoints(Point[] points) { if (points == null || points.length < 1) { return 0; } int n = points.length; if (n == 1) { return 1; } int maxLine = 0; for (int i = 0; i < n; i++) { int samePoint = 0; int noK = 0; int zeroK = 0; Point curPoint = points[i]; Map<Double, Integer> kMap = new HashMap<Double, Integer>(); for (int j = 0; j < n; j++) { Point point = points[j]; if (curPoint.x == point.x && curPoint.y == point.y) { samePoint++; } else if (curPoint.x == point.x) { noK++; } else if (curPoint.y == point.y) { zeroK++; } else { double k = ((double) curPoint.y - (double) point.y) / (curPoint.x - point.x); if (kMap.containsKey(k)) { kMap.put(k, kMap.get(k) + 1); } else { kMap.put(k, 1); } } } if (maxLine < (noK + samePoint)) { maxLine = noK + samePoint; } if (maxLine < (zeroK + samePoint)) { maxLine = zeroK + samePoint; } for (Integer value : kMap.values()) { if (value + samePoint > maxLine) { maxLine = value + samePoint; } } } return maxLine; } }
相关文章推荐
- [LeetCode] 149. Max Points on a Line
- Leetcode#149 Max Points on a Line
- [leetcode] Max Points on a Line
- LeetCode 149. Max Points on a Line
- 【LeetCode】max-points-on-a-line一条线上最多点
- leetcode--max-points-on-a-line
- leetcode 149 —— Max Points on a Line
- LeetCode-Max Points on a Line[AC源码]
- LeetCode – Refresh – Max Points on a Line
- LeetCode - Max Points on a Line
- 【LeetCode】Max Points on a Line 解题报告
- leetcode Max Points on a Line
- [Leetcode Solution]Max Points on a Line
- leetcode-Max Points on a Line
- leetcode-[3]Max Points on a Line
- leetcode3题解 Max Points on a line
- Leetcode 149 Max Points on a Line
- LeetCode-Max Points on a Line-最大共线的点的数目-Hash
- LeetCode Max Points on a Line
- [leetCode]:Max Points on a Line