LintCode:最多有多少個點在一條直綫上
2017-04-23 13:32
190 查看
一.題目描述
给出二维平面上的n个点,求最多有多少点在同一条直线上。
二.思路和代碼
用哈希表存储斜率相同的点,遍历即可,只要特殊处理两个点相同和垂直于X轴(x坐标相同)的情况
给出二维平面上的n个点,求最多有多少点在同一条直线上。
二.思路和代碼
用哈希表存储斜率相同的点,遍历即可,只要特殊处理两个点相同和垂直于X轴(x坐标相同)的情况
public class Solution { /** * @param points an array of point * @return an integer */ public int maxPoints(Point[] points) { // Write your code here if(points == null || points.length==0){ return 0; } double vertical = Integer.MAX_VALUE; double same = Integer.MIN_VALUE; HashMap<Double,Integer> map= new HashMap<Double,Integer>(); int result = 0; for(int i = 0;i < points.length ; i++){ map.clear(); map.put(same,1); int max = 0; for(int j = i + 1 ; j < points.length ; j++){ double k = 0; if(points[j].x == points[i].x && points[j].y == points[i].y){ max++; continue; } if(points[j].x - points[i].x== 0){ k = vertical; }else{ k = 0.0+(double)(points[j].y-points[i].y)/(double)(points[j].x-points[i].x); } if(map.containsKey(k)){ map.put(k,map.get(k)+1); }else{ map.put(k, 2); } } for(int temp:map.values()){ if(temp+max>result){ result=temp+max; } } } return result; } }
相关文章推荐
- 最多有多少个点在一条直线上-LintCode
- LintCode:最多有多少个点在一条直线上
- LintCode 最多有多少个点在一条直线上
- [LintCode 186] 最多有多少个点在一条直线上(Python)
- lintcode最多有多少个点在一条直线上
- lintcode,最多有多少个点在一条直线上
- lintcode 中等题:Max Points on a Line 最多有多少个点在一条直线上
- [LintCode] 最多有多少个点在一条直线上
- 【LintCode】最多有多少个点在一条直线上
- lintcode-186-最多有多少个点在一条直线上
- lintcode(186)最多有多少个点在一条直线上
- JVM最多能创建多少个线程:unabletocreatenewnativethread
- 一个UIView最多能有多少个superView?
- LintCode-装最多水的容器
- foxmail的收件箱中最多能放多少邮件呢?
- 最多能喝多少瓶啤酒呢?
- 小白书86页欧拉公式,椭圆边界上n个点最多能把椭圆分成多少块
- 一个linux上最多能生成多少个socket
- 最多有多少人参加比赛呢?
- IIS 6中最多可以有多少个池?