Leetcode 812.最大三角形面积
1 题目描述(Leetcode题目链接)
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
注意:
- 3 <= points.length <= 50.
- 不存在重复的点。
- -50 <= points[i][j] <= 50.
- 结果误差值在 1 0 − 6 10^-6 10−6 以内都认为是正确答案。
2 题解
行列式计算。
class Solution:
def largestTriangleArea(self, points: List[List[int]]) -> float:
res = 0
n = len(points)
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
u = [points[j][0] - points[i][0], points[j][1] - points[i][1]]
v = [points[k][0] - points[i][0], points[k][1] - points[i][1]]
res = max(abs(u[0]*v[1]-u[1]*v[0]), res)
return res/2
这个一行。
class Solution:
def largestTriangleArea(self, points: List[List[int]]) -> float:
return max(abs((x0-x2)*(y1-y2)-(x1-x2)*(y0-y2)) for (x0,y0),(x1,y1),(x2,y2) in combinations(points,3))/2