• 直线上最多的点数


    给定一个二维平面,平面上有 个点,求最多有多少个点在同一条直线上。

    function maxPoints(points) {
        if(points.length == 1 || points.length == 2){
            return points.length
        }
        let number = 0
        for(let i = 0;i < points.length-1;i++){
            let item = points[i]
            for(let j = i+1;j < points.length;j++){
                let jItem = points[j]
                let r,n,num = 0;
                if(jItem[0] == item[0]){
                    for(let k = 0;k < points.length;k++){
                        let kItem = points[k]
                        if(kItem[0] == item[0]){
                            num++
                        }
                    }
                }else if(jItem[1] == item[1]){
                    for(let k = 0;k < points.length;k++){
                        let kItem = points[k]
                        if(kItem[1] == item[1]){
                            num++
                        }
                    }
                }else{
                    r = (jItem[1]-item[1]) / (jItem[0]-item[0])
                    n = ((jItem[1]+item[1]) - ((jItem[0]+item[0]) * r))/2
                    for(let k = 0;k < points.length;k++){
                        let kItem = points[k]
                        if(kItem[1] == (kItem[0] * r + n)){
                            num++
                        }
                    }
                }
                if(num > number){
                    number = num
                }
            }
        }
        return number
    }
    

    else if(jItem[0] == item[0] && jItem[1] == item[1]){
      for(let k = 0;k < points.length;k++){
        let kItem = points[k]
        if(kItem[0] == item[0] && kItem[1] == item[1]){
          num++
        }
      }
    }

    判断了x轴的值相同或y轴的值相同,就不用判断同一点了(也就是x轴、y轴的值都相同)

    r = (jItem[1]-item[1]) / (jItem[0]-item[0])  
    n = ((jItem[1]+item[1]) - ((jItem[0]+item[0]) * r))/2

    Leecode提交未通过,求得r、n的值存在精度丢失的问题

  • 相关阅读:
    Linux常用命令大全
    深入浅出Shell编程: Shell 变量
    hadoop权威指南实例源代码网址
    hadoop基本操作命令
    Hadoop集群搭建
    JobStracker与TaskStracker的区别联系
    Linux解压命令
    Java程序作为windows服务运行
    【leetcode】1274. Number of Ships in a Rectangle
    【leetcode】1272. Remove Interval
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13155165.html
Copyright © 2020-2023  润新知