Leetcode 1232 - Check If It Is a Straight Line

題目

Problem#

給你 n 個座標 coordinate[i] = (x, y),問你能不能組成一條直線

測資限制#

  • $2 \le n \le 1000$
  • $-10^4 \le x, y \le 10^4 $

想法#

  • 怎麼檢查點 $a$、$b$ 和 $c$ 是否在同一直線上?

    • 計算 $(a, b)$ 和 $(b, c)$ 之間的斜率:如果 $s_ab = s_bc$,則它們在同一直線上。使用以下公式計算斜率:$s = \frac{y2 - y1}{x2 - x1}$。
  • 時間複雜度: $\mathcal{O}(n\log{n})$

  • 空間複雜度: $\mathcal{O}(1)$

AC Code#

  • 步驟
    1. 按升序對點進行排序。
    2. 計算點 ii+1 的斜率。
    3. 如果所有斜率的值都相同,則表示輸入是一條直線。