Leetcode Leetcode 1232. Embellecimiento en una línea (pitón)

Tema:

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

Solución:

Se divide en dos casos:
1. Cuando la pendiente es 0, solo la abscisa debe ser la misma
2. Cuando la pendiente no es 0, la pendiente es igual.

Código_1:

class Solution:
    def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
        if coordinates[1][0] - coordinates[0][0] == 0:  # 斜率不存在时判断横坐标是否均相同
            j = coordinates[0][0]
            for i in range(1, len(coordinates)):
                if coordinates[i][0] == j:
                    pass
                else:
                    return False

        else:
            a = (coordinates[1][1] - coordinates[0][1]) / (coordinates[1][0] - coordinates[0][0])
            for i in range(2, len(coordinates)):
                if coordinates[i][0] - coordinates[i - 1][0] == 0:  # 只要横坐标之差出现0就错误,避免除以0的情况
                    return False
                elif (coordinates[i][1] - coordinates[i - 1][1]) / (coordinates[i][0] - coordinates[i - 1][0]) == a:
                    pass
                else:
                    return False
        
        return True

Code_2:
también se puede convertir a multiplicación para su funcionamiento

class Solution:
    def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
        if coordinates is None or len(coordinates) <= 2:
            return True

        y = coordinates[1][1] - coordinates[0][1]
        x = coordinates[1][0] - coordinates[0][0]

        for i in range(2, len(coordinates)):
            y1 = coordinates[i][1] - coordinates[0][1]
            x1 = coordinates[i][0] - coordinates[0][0]
            if y * x1 != y1 * x:
                return False
        
        return True

Resultado:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_50791900/article/details/112727708
Recomendado
Clasificación