缀点成线

Posted zhenjianyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缀点成线相关的知识,希望对你有一定的参考价值。

在一个 XY 坐标系中有一些点,我们用数组 coordinates 来分别记录它们的坐标,其中 coordinates[i] = [x, y] 表示横坐标为 x、纵坐标为 y 的点。

请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。

function checkStraightLine(coordinates) {
    if(coordinates.length == 1 || coordinates.length == 2){
        return true
    }
    let a,b;
    let item0 = coordinates[0],item1 = coordinates[1];
    if(item0[0] == item1[0]){
        for(let i = 2;i < coordinates.length;i++){
            let item = coordinates[i]
            if(item[0] != item0[0]){
                return false
            }
        } 
        return true
    }
    if(item0[1] == item1[1]){
       for(let i = 2;i < coordinates.length;i++){
            let item = coordinates[i]
            if(item[1] != item0[1]){
                return false
            }
        } 
        return true
    }
    a = (item1[1] - item0[1]) / (item1[0] - item0[0])
    b = ((item1[1] + item0[1]) - (item1[0] + item0[0]) * a ) / 2
    for(let i = 2;i < coordinates.length;i++){
        let item = coordinates[i]
        if(a * item[0] + b != item[1]){
            return false
        }
    }
    return true
}

Leecode提交通过

以上是关于缀点成线的主要内容,如果未能解决你的问题,请参考以下文章

算法系列——缀点成线

算法系列——缀点成线

算法系列——缀点成线

酷炫星空,连点成线

SharpGL的功能应用--图形绘制

优秀管理者在哪些方面超乎常人