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.

    思路:

    固定一点,计算每一条经过这个店的直线斜率,用一个hashmap记录。记录下最多的斜率个数。对每个点做一次这样的搜索,这样复杂度就是O(n^2)

     (1)坐标相同的两个不同的点 算作2个点

     (2)假如有5个坐标相同的点,和另外任意1点在一条直线上,5+1>max,则max=5+1;(最后一个if语句的作用)

    /**
     * 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 == 0) return 0;
            if(points.length == 1) return 1;
            int max = 0;
            for(int i = 0; i < points.length; i++) {
                HashMap<Float, Integer> hm = new HashMap<Float, Integer>();
                int same = 0;
                for(int j = 0; j < points.length; j++) {
                    if(i == j) continue;
                    if(points[i].x == points[j].x && points[i].y == points[j].y) {same++; continue;}
                    float slope = ((float)(points[i].y - points[j].y))/(points[i].x - points[j].x);
                    if(hm.containsKey(slope))
                        hm.put(slope, hm.get(slope) + 1);
                    else
                        hm.put(slope, 2);
                }
                for(float k : hm.keySet()) {  //遍历hashmap中key值的方法
                    hm.put(k, hm.get(k) + same);
                }
            for(int v : hm.values()) { //遍历hashmap中values值的方法
                    if(v > max) max = v;
                }
                if(same+1 > max)
                    max = same+1;
            }
            return max;
        }
    }
  • 相关阅读:
    请注意更新TensorFlow 2.0的旧代码
    tf.cast用法
    文件句柄
    Python学习(四)cPickle的用法
    机器都会学习了,你的神经网络还跑不动?来看看这些建议
    Hadoop集群管理之配置文件
    SQL之case when then用法
    关于2014
    Oracle之虚拟索引
    Linux之Ganglia源码安装
  • 原文地址:https://www.cnblogs.com/hygeia/p/5136748.html
Copyright © 2011-2022 走看看