1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
public int (Point[] points) { if (points == null || points.length == 0) return 0; int ans = 0; for (int i = 0; i < points.length; ++i) { HashMap<Float, Integer> map = new HashMap<>(); int x1 = points[i].x, y1 = points[i].y; int same = 0; int vertical = 1; int horizontal = 1; for (int j = i + 1; j < points.length; ++j) { int x2 = points[j].x, y2 = points[j].y; if (x1 == x2 && y1 == y2) { same += 1; continue; } if (x1 == x2) { vertical += 1; continue; } if (y1 == y2) { horizontal += 1; continue; } float slope = slope(points[i], points[j]); if (map.containsKey(slope)) { map.put(slope, map.get(slope) + 1); } else { map.put(slope, 2); } } int localMax = 0; for (int val : map.values()) { localMax = Math.max(localMax, val); } localMax = Math.max(localMax, Math.max(vertical, horizontal)); localMax += same; ans = Math.max(localMax, ans); } return ans; }
public float slope(Point p1, Point p2) { return (p1.y - p2.y) / (float)(p1.x - p2.x); }
|
近期评论