zoukankan      html  css  js  c++  java
  • May LeetCoding Challenge8 之 交叉相乘

    本题用数学方法做即可。

    两点确定一条直线,如果点的数量<=2,这些点一定在一条线上。

    对于两个以上的点:[[1, 2], [2, 3], [3, 4]] 可以判断斜率是否相等(3-2)/(2-1) == (4-3)/(3-2)。但计算机除法分母不能为0,所以用交叉相乘的方法 (3-2)*(3-2) == (2-1)*(4-3)。

    JAVA

    class Solution {
        public boolean checkStraightLine(int[][] coordinates) {
            if(coordinates.length <3 ) return true;
            return (coordinates[1][1]-coordinates[0][1]) * (coordinates[2][0]-coordinates[1][0])
                   == (coordinates[2][1]-coordinates[1][1]) * (coordinates[1][0]-coordinates[0][0]);
        }
    }

    Python3

    class Solution:
        def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
            if len(coordinates) < 3:
                return True
            return (coordinates[1][1]-coordinates[0][1]) * (coordinates[2][0]-coordinates[1][0])
                   == (coordinates[2][1]-coordinates[1][1]) * (coordinates[1][0]-coordinates[0][0]) 
        #(3-2)/(2-1) == (4-3)/(3-2) -> (3-2)*(3-2) == (2-1)*(4-3)
  • 相关阅读:
    java学习笔记
    androd Sdk manager配置
    50ms延时程序
    89c51中断入口地址表
    打印杨辉三角--队列的应用
    栈的应用--括号匹配
    哈夫曼编码---数据压缩
    PS转手绘
    数据结构学习思路
    第三届蓝桥杯省赛---第39级台阶
  • 原文地址:https://www.cnblogs.com/yawenw/p/12850739.html
Copyright © 2011-2022 走看看