checkStraightLine- punteado en una línea

Título

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

inmediato:

2 <= coordenadas
. Longitud <= 1000 coordenadas [i]. Longitud == 2-10
^ 4 <= coordenadas [i] [0], coordenadas [i] [1] <= 10 ^ 4
coordenadas 中 不含 重复 的点

Temas relacionados Matemáticas de matriz de geometría

Ideas para resolver problemas

Demostración de código directo relativamente simple

Demostración de código:

class Solution {
    public boolean checkStraightLine(int[][] coordinates) {
            if(coordinates.length==2)
                return true;
            //判断所求线是否垂直于x轴
           if(coordinates[1][0]==coordinates[0][0])
           {
               for (int i = 2; i < coordinates.length; i++) {
                   if(coordinates[i][0]!=coordinates[0][0])
                       return false;
               }
           }
           else
           {
               //求直线的斜率,如果两点的斜率一致,则可以保证在同一条直线上
               double a=(coordinates[1][1]-coordinates[0][1])*1.0/(coordinates[1][0]-coordinates[0][0]);
               for (int i = 2; i < coordinates.length; i++) {
                   double b = (coordinates[i][1] - coordinates[0][1])*1.0 / (coordinates[i][0] - coordinates[0][0]);
                   if(a!=b)
                       return false;
               }
           }

        return true;
    }
}

resultado de ejecución

La
respuesta de información fue exitosa:
tiempo de ejecución: 0 ms, derrotando al 100,00% de los usuarios de Java
Consumo de memoria: 37,9 MB, derrotando al 82,88% de los usuarios de Java

Supongo que te gusta

Origin blog.csdn.net/tangshuai96/article/details/112728383
Recomendado
Clasificación