zoukankan      html  css  js  c++  java
  • 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.

    ret表示垂直x轴线上的点数,dup表示和改点重合的点数。

    import java.util.HashMap;
    import java.util.Map;
    /**
     * 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){
            int n = points.length;
            if(n<2)return n;
            
            int ret = 0;
            for(int i = 0; i < n; i++){
                int dup = 1;
                int vtl = 0;
                Map<Float, Integer> map = new HashMap<Float, Integer>();
                Point a = points[i];
                
                for(int j = 0; j < n; j++){
                    if(i == j) continue;
                    Point b = points[j];
                    if(a.x == b.x){
                        if(a.y==b.y)dup++;
                        else vtl++;
                    }else{
                        float k = (float)(a.y-b.y)/(a.x-b.x);
                        if(map.get(k)==null)map.put(k,1);
                        else map.put(k,map.get(k)+1);
                    }
                }
                
                int max = vtl;
                for(float k:map.keySet()){
                    max = Math.max(max, map.get(k));
                }
                ret = Math.max(ret, max+dup);
            }
            return ret;
        }
    }
  • 相关阅读:
    C++——多态性
    C++——继承与派生
    C++——字符串处理
    C++——深拷贝
    C++——浅拷贝
    C++——动态内存分配3
    C++——动态内存分配2-创建对象数组
    C++——动态内存分配1
    C++——指针5
    C++——指针4
  • 原文地址:https://www.cnblogs.com/LoganChen/p/8086555.html
Copyright © 2011-2022 走看看