题目描述
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
题意是给定一个2D平面图(平面坐标系),找出出现最多的点的那条直线,并返回在该直线上点的个数。暴力破解即可。
package sxd.learn.java.leetcode;
/**
*
* @author lab
* 2016/5/12
* Given n points on a 2D plane, find the maximum number of
* points that lie on the same straight line.
*/
public class Leetcode3 {
public static void main(String[] args) {
}
public int maxPoints(Point[] points) {
int length = points.length;
if(length == 0)
return 0;
if(length == 1)
return 1;
int count = 0;
int max = 0;
for(int i = 0; i < length; i++){
for (int j = i + 1; j < length; j++) {
count = 0;
//同一垂直线上
if(points[i].x == points[j].x && points[i].y == points[j].y){
for (int k = 0; k < length; k++) {
if(points[k].x == points[i].x && points[k].y == points[i].y){
count ++;
}
}
if(count > max)
max = count;
continue;
}
//斜率
for (int k = 0; k < length; k++) {
if((points[k].y - points[j].y) * (points[i].x - points[j].x) == (points[i].y - points[j].y) * (points[k].x - points[j].x)){
count++;
}
}
if(count > max)
max = count;
}
}
return max;
}
class Point {
int x;
int y;
Point() { x = 0; y = 0; }
Point(int a, int b) {
x = a; y = b;
}
}
}