Mô tả bài toán
Cho danh sách tọa độ điểm trong mặt phẳng Descartes. Kiểm tra xem các điểm có nằm trên một đường thẳng hay không.
Ví dụ: coordinates = [(5,5),(8,8),(9,9)] → True (độ dốc 1).
Giải thuật (Kiểm tra độ dốc)
- Lấy hai điểm đầu
(x0,y0),(x1,y1). - Với mỗi điểm
(x,y)từ chỉ số 2: kiểm tra(x0 - x1)*(y1 - y) == (x1 - x)*(y0 - y1)(tránh chia cho 0). - Nếu bất kỳ điểm nào không thỏa mãn: trả về
False. - Trả về
True.
Ví dụ mã Python
class Solution:
def solve(self, coordinates):
(x0, y0), (x1, y1) = coordinates[0], coordinates[1]
for i in range(2, len(coordinates)):
x, y = coordinates[i]
if (x0 - x1) * (y1 - y) != (x1 - x) * (y0 - y1):
return False
return True
ob = Solution()
coordinates = [[5, 5], [8, 8], [9, 9]]
print(ob.solve(coordinates))
Đầu vào
[[5, 5],[8, 8],[9, 9]]
Đầu ra
True