题目
难度:★★☆☆☆
类型:几何
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
解答
已知三角形的三个顶点,求三角形的面积:
证明:
假设一个三角形有三个顶点P1(x1, y1), P2(x2, y2), P3(x3, y3),底边为P2P3,则底边长
底边所在的直线方程是:
化简为:
过P1作底边P2P3的高,根据点到直线的距离公式:
可得高为点P1到直线P2P3的距离:
因此三角形的面积为:
我们使用暴力法遍历所有可能的三点组合。
class Solution:
def largestTriangleArea(self, points):
from itertools import combinations
amax = 0
for c in combinations(points, 3):
x1, x2, x3, y1, y2, y3 = c[0][0], c[1][0], c[2][0], c[0][1], c[1][1], c[2][1]
s = abs(x1*y3-x3*y1+x2*y1-x1*y2+x3*y2-x2*y3)/2
amax = max(s, amax)
return amax
如有疑问或建议,欢迎评论区留言~