标签:style color io java ar for div sp on
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
/** * 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==null) return 0; if (points.length<=2) return points.length; Map<Integer,Map<Integer,Integer>> map = new HashMap<Integer,Map<Integer,Integer>>(); int result=0; for (int i=0;i<points.length;i++){ map.clear(); int overlap=0,max=0; for (int j=i+1;j<points.length;j++){ int x=points[j].x-points[i].x; int y=points[j].y-points[i].y; if (x==0&&y==0){ overlap++; continue; } int gcd=generateGCD(x,y); if (gcd!=0){ x/=gcd; y/=gcd; } if (map.containsKey(x)){ if (map.get(x).containsKey(y)){ map.get(x).put(y, map.get(x).get(y)+1); }else{ map.get(x).put(y, 1); } }else{ Map<Integer,Integer> m = new HashMap<Integer,Integer>(); m.put(y, 1); map.put(x, m); } max=Math.max(max, map.get(x).get(y)); } result=Math.max(result, max+overlap+1); } return result; } private int generateGCD(int a,int b){ if (b==0) return a; else return generateGCD(b,a%b); } }
标签:style color io java ar for div sp on
原文地址:http://blog.csdn.net/jiewuyou/article/details/39138091