zoukankan      html  css  js  c++  java
  • 直线上最多的点数

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

    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的值存在精度丢失的问题

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13155165.html
Copyright © 2011-2022 走看看