812. 最大面积三角形(Python)

题目

难度:★★☆☆☆
类型:几何

给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。

示例

输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2

解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。


812. 最大面积三角形(Python)_第1张图片
三角形的最大面积

解答

已知三角形的三个顶点,求三角形的面积:

证明:

假设一个三角形有三个顶点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

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(812. 最大面积三角形(Python))