# max-points-on-a-line(Leetcode)

191人阅读 评论(0)

## 题目描述

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

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;
}
}

}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：15739次
• 积分：732
• 等级：
• 排名：千里之外
• 原创：57篇
• 转载：8篇
• 译文：1篇
• 评论：0条
文章分类