Hay algunos puntos en un sistema de coordenadas XY. Usamos las coordenadas de la matriz para registrar sus coordenadas por separado, donde las coordenadas [i] = [x, y] representan el punto con la abscisa como x y la ordenada como y.
Juzgue si estos puntos están en la misma línea recta en el sistema de coordenadas. Si es así, devuelva verdadero, de lo contrario, devuelva falso.
Ejemplo 1:
Entrada: coordenadas = [[1,2], [2,3], [3,4], [4,5], [5,6], [6,7]]
Salida: verdadero
Ejemplo 2:
Entrada: coordenadas = [[1,1], [2,2], [3,4], [4,5], [5,6], [7,7]]
Salida: falso
rápido:
2 <= coordenadas.longitud <= 1000
coordenadas [i] .longitud == 2-10
^ 4 <= coordenadas [i] [0], coordenadas [i] [1] <= 10 ^ 4
coordenadas 中 不含 重复 的点
Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/check-if-it-is-a-straight-line Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
class Solution {
public boolean checkStraightLine(int[][] coordinates) {
int len = coordinates.length;
if(len < 2) return true;
//(y2 - y1) / (x2 - x1) == (y3 - y2) / (x3 - x2)
//(y2 - y1) * (x3 - x2) == (y3 - y2) * (x2 - x1)
for(int i = 1; i < len -1 ; i++){
int dx = coordinates[i][0] - coordinates[i-1][0];
int dy = coordinates[i][1] - coordinates[i-1][1];
int dx2 = coordinates[i+1][0] - coordinates[i][0];
int dy2 = coordinates[i+1][1] - coordinates[i][1];
if(1.0 * dy * dx2 != 1.0 * dy2 * dx) return false;
}
return true;
}
}