码迷,mamicode.com
首页 > 其他好文 > 详细

直线上最多的点数

时间:2020-06-17 23:13:17      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:function   highlight   UNC   bsp   int   point   class   func   jit   

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

function maxPoints(points) {
    if(points.length == 1){
        return 1
    }
    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]){
                r = 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
}

  

直线上最多的点数

标签:function   highlight   UNC   bsp   int   point   class   func   jit   

原文地址:https://www.cnblogs.com/zhenjianyu/p/13155165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!