Línea punteada java

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:
Inserte la descripción de la imagen aquí

Entrada: coordenadas = [[1,2], [2,3], [3,4], [4,5], [5,6], [6,7]]
Salida: verdadero
Ejemplo 2:
Inserte la descripción de la imagen aquí

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;
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43824233/article/details/112746053
Recomendado
Clasificación