力扣 812. 最大三角形面积

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

示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。

 

 

 


注意:

3 <= points.length <= 50.
不存在重复的点。
 -50 <= points[i][j] <= 50.
结果误差值在 10^-6 以内都认为是正确答案。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-triangle-area

 

计算三角形面积的鞋带公式:

 

 

 

 1 class Solution:
 2     def largestTriangleArea(self, points: List[List[int]]) -> float:
 3         def Det(pi, pj, pk):
 4             return 0.5 * abs((pi[0]*pj[1]+pj[0]*pk[1]+pk[0]*pi[1]) - (pi[1]*pj[0]+pj[1]*pk[0]+pk[1]*pi[0]))
 5 
 6         res = 0.0
 7         l = len(points)
 8         for i in range(l):
 9             for j in range(i+1, l):
10                 for k in range(j+1, l):
11                     res = max(res, Det(points[i], points[j], points[k]))
12         return res

 

posted @ 2021-11-20 22:02  空谷回音。  阅读(31)  评论(0编辑  收藏  举报