max-points-on-a-line
来源:互联网 发布:aviris数据下载 编辑:程序博客网 时间:2024/05/21 22:56
max-points-on-a-line
描述
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
思路
暴力解决,依次便利i,将其他点到i点的斜率依次保存,动态维护一个到该点斜率相同最多的个数,最后依次遍历找到最大点返回即可.
- AC代码
import java.util.*;/** * 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 max = 0;//用于返回的结果,即共线点的最大个数 Map<Double, Integer> map = new HashMap<Double, Integer>();//保存同一个斜率的点的个数 for (int i = 0; i < points.length; i++) {//以每一个点为固定点 map.clear(); int duplicate = 1;//记录跟固定点重合的个数 for(int j = 0 ; j < points.length; j++){//遍历其他点,求其与固定点之间的斜率 if (i == j) continue;//如果是自己,跳过 double slope = 0.0;//斜率 if (points[i].x == points[j].x && points[i].y == points[j].y) {//如果跟固定点重合 duplicate++; continue; } else if (points[i].x == points[j].x) {//如果跟固定点在同一条竖线上,斜率设为最大值 slope = Integer.MAX_VALUE; } else {//计算该点与固定点的斜率 slope = (double)(points[i].y - points[j].y) / (points[i].x - points[j].x);//注意如果将进行double转换,如果不添加double。像5/2位2.0,加上double后先将5转为5.0得到为2.5 } map.put(slope, map.containsKey(slope) ? map.get(slope) + 1 : 1); } //更新最优解 if (map.keySet().size() == 0) {//如果map为空 return duplicate; } else { for (double key : map.keySet()) { max = Math.max((duplicate + map.get(key)), max); } } } return max; } }
0 0
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points On a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- max points on a line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- 一致性Hash算法
- 一个例子介绍Ant的用法
- hdu 5446 Unknown Treasure(lucas+中国剩余定理)
- android数据存储之sharedPreferences记住密码完成跳转
- 抽象工厂方法
- max-points-on-a-line
- 1282 时钟
- Java 系列之异常与反射
- 2016年五一劳动节天津之旅
- 第十周练习 继承 二义性和作用域操作限定标识符 阅读程序
- 深圳-马来西亚5日行程计划
- 打字
- hdu 5444 Elven Postman(二叉搜索树)
- JavaScript语法(二)