https://leetcode.com/problems/valid-boomerang Easy

Условие

Даны три точки на плоскости (x1, y1), (x2, y2), (x3, y3).

Бумеранг — это три точки, не лежащие на одной прямой.

Верните true, если точки образуют бумеранг, иначе false.

Примеры

Input: points = [[1,1],[2,3],[3,2]] Output: true

Input: points = [[1,1],[2,2],[3,3]] Output: false

Решение

fun isBoomerang(points: Array<IntArray>): Boolean {
    val (x1, y1) = points[0]
    val (x2, y2) = points[1]
    val (x3, y3) = points[2]

    // Проверяем, не совпадают ли точки
    if ((x1 == x2 && y1 == y2) || (x1 == x3 && y1 == y3) || (x2 == x3 && y2 == y3)) return false

    // Проверяем, не лежат ли точки на одной прямой по формуле площади треугольника
    return (y2 - y1) * (x3 - x2) != (y3 - y2) * (x2 - x1)
}

Временная сложность

O(1), так как выполняем фиксированное число операций.

Пространственная сложность

O(1), так как не используем дополнительную память.