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

May LeetCoding Challenge8 之 交叉相乘

时间:2020-05-08 16:16:32      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:list   lin   方法   return   python3   计算   odi   ret   col   

本题用数学方法做即可。

两点确定一条直线,如果点的数量<=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)

 

May LeetCoding Challenge8 之 交叉相乘

标签:list   lin   方法   return   python3   计算   odi   ret   col   

原文地址:https://www.cnblogs.com/yawenw/p/12850739.html

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