zoukankan      html  css  js  c++  java
  • 缀点成线

    在一个 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提交通过

  • 相关阅读:
    macOS 修改键盘重复按键延迟
    stdout 与 stderr 区别
    E. 1-Trees and Queries
    Codeforces Round #615 (Div. 3)
    Codeforces Round 613(div 2)
    Codeforces Edu80
    SPOJ
    快读
    《货车运输》题解--最大生成树&倍增
    倍增思想求lca
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13300366.html
Copyright © 2011-2022 走看看