2021 01 17 綴點成線

2021-10-16 08:59:43 字數 1220 閱讀 2453

只考慮兩個點,在驗證所有的點,先考慮x1 === x2 和 y1 === y2

然後考慮兩個點的x的值可能為零,然後寫出k,b的計算公式,最後用every判斷一下。

/**

* @param coordinates

* @return

*/var

checkstraightline

=function

(coordinates))}

else

if(y1===y2))}

let b =

((y1*x2-x1*y2)

/(x2-x1)

)let k

if(x1===0)

else

return coordinates.

every

(item =>)}

;

公式求b,真是乙個sb的想法。。。。自己看了都尷尬。可以先用公式求k呀。(學過的數學全忘了)

我們知道,在給定的點集中,以任意一點 p 為基準,如果所有其他點的k是不變的,那麼點集內所有的點在同一條直線上。但是這種做法會涉及到除數為 0 的問題,即垂直於 x 軸的直線需要單獨判斷。而且在計算浮點除法運算時還會涉及到精度問題,雖然在力扣中通過應該是沒問題的,但是如果把測試集稍微設計一下就可能會通過不了。所以我們最好另尋他法。

我們可以把點集中除了 p之外的點 p i都看成以 p為起點、p i為終點的向量,記為 vi,並選擇 v1作為基準。如果其他向量都與 v 1 共線,那麼點集內所有的點共線。

∣α, β∣=0,

即它們拼成的二階矩陣的行列式為 0。

int n = coordinates.

size()

; int x0 = coordinates[0]

[0], y0 = coordinates[0]

[1];

int x = coordinates[1]

[0]- x0;

int y = coordinates[1]

[1]- y0;

for(int i =

2; i < n;

++i)

}return

true

;

這個想法很是不錯,很細緻。

1232 綴點成線

在乙個 xy 座標系中有一些點,我們用陣列 coordinates 來分別記錄它們的座標,其中 coordinates i x,y 表示橫座標為 x 縱座標為 y 的點。請你來判斷,這些點是否在該座標系中屬於同一條直線上,是則返回 true,否則請返回 false。示例 1 輸入 coordinat...

1232 綴點成線

在乙個 xy 座標系中有一些點,我們用陣列 coordinates 來分別記錄它們的座標,其中 coordinates i x,y 表示橫座標為 x 縱座標為 y 的點。請你來判斷,這些點是否在該座標系中屬於同一條直線上,是則返回 true,否則請返回 false。輸入 coordinates 1,...

leetcode 1232 綴點成線

1037.有效的迴旋鏢 1232.綴點成線 在乙個 xy 座標系中有一些點,我們用陣列 coordinates 來分別記錄它們的座標,其中 coordinates i x,y 表示橫座標為 x 縱座標為 y 的點。請你來判斷,這些點是否在該座標系中屬於同一條直線上,是則返回 true,否則請返回 f...