May LeetCoding Challenge8 之 交叉相乘
Posted yawenw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
以上是关于May LeetCoding Challenge8 之 交叉相乘的主要内容,如果未能解决你的问题,请参考以下文章
May LeetCoding Challenge9 之 求方差
May LeetCoding Challenge9 之 求方差
May LeetCoding Challenge 之 标准二分查找法
May LeetCoding Challenge27 之 二分图