您的位置:首页 > 编程语言 > Go语言

Algorithms—149.Max Points on a Line

2015-07-20 11:10 585 查看
思路:3点判断一直线,遍历判断,注意重点。

/**
* 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<3) {
return points.length;
}
int answer=2;
for (int i = 0; i < points.length; i++) {
for (int j = i+1; j < points.length; j++) {
if((points[i].x!=points[j].x)||(points[i].y!=points[j].y)){
int sum=0;
for (int k = 0; k < points.length; k++) {
if (isStraight(points[i],points[j],points[k])) {
sum++;
}
}
if (sum>answer) {
answer=sum;
}
}else {
int sum=0;
for (int k = 0; k < points.length; k++) {
if ((points[k].x==points[j].x)&&(points[k].y==points[j].y)) {
sum++;
}
}
if (sum>answer) {
answer=sum;
}
}
}
}
return answer;
}
public boolean isStraight (Point a,Point b,Point c){
return ((b.y-c.y)*(a.x-c.x))==((a.y-c.y)*(b.x-c.x));
}
}


耗时:300ms,上游

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: