LeetCode: Max Points on a Line
2014-04-08 01:51
357 查看
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
固定一点,计算每一条经过这个店的直线斜率,用一个hashmap记录。记录下最多的斜率个数。对每个点做一次这样的搜索,这样复杂度就是O(n^2)
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) {
if(points.length == 0) return 0;
if(points.length == 1) return 1;
int max = 0;
for(int i = 0; i < points.length; i++) {
HashMap<Float, Integer> hm = new HashMap<Float, Integer>();
int same = 0;
for(int j = 0; j < points.length; j++) {
if(i == j) continue;
if(points[i].x == points[j].x && points[i].y == points[j].y) {same++; continue;}
float slope = ((float)(points[i].y - points[j].y))/(points[i].x - points[j].x);
if(hm.containsKey(slope))
hm.put(slope, hm.get(slope) + 1);
else
hm.put(slope, 2);
}
for(float k : hm.keySet()) {
hm.put(k, hm.get(k) + same);
}
for(int v : hm.values()) {
if(v > max) max = v;
}
if(same+1 > max)
max = same+1;
}
return max;
}
}
固定一点,计算每一条经过这个店的直线斜率,用一个hashmap记录。记录下最多的斜率个数。对每个点做一次这样的搜索,这样复杂度就是O(n^2)
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) {
if(points.length == 0) return 0;
if(points.length == 1) return 1;
int max = 0;
for(int i = 0; i < points.length; i++) {
HashMap<Float, Integer> hm = new HashMap<Float, Integer>();
int same = 0;
for(int j = 0; j < points.length; j++) {
if(i == j) continue;
if(points[i].x == points[j].x && points[i].y == points[j].y) {same++; continue;}
float slope = ((float)(points[i].y - points[j].y))/(points[i].x - points[j].x);
if(hm.containsKey(slope))
hm.put(slope, hm.get(slope) + 1);
else
hm.put(slope, 2);
}
for(float k : hm.keySet()) {
hm.put(k, hm.get(k) + same);
}
for(int v : hm.values()) {
if(v > max) max = v;
}
if(same+1 > max)
max = same+1;
}
return max;
}
}
相关文章推荐
- [LeetCode] Max Points on a Line
- LeetCode-max-points-on-a-line
- leetcode 149 —— Max Points on a Line
- LeetCode(149) Max Points on a Line
- [Leetcode Solution]Max Points on a Line
- LeetCode-149.Max Points on a Line
- [LeetCode 第5题] -- 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 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 - Max Points on a Line
- [LeetCode] Max Points on a Line
- leetcode之Max Points on a Line