题目地址:https://leetcode.com/problems/largest-triangle-area/description/
大意:给定一系列坐标轴上的点,任意3个点为顶点可以画出一个三角形,返回画出最大面积三角形的面积。
其实在坐标轴上三个点求三角形面积是有公式的:
这样的话就很好做了
import itertools
class Solution:
def largestTriangleArea(self, points):
"""
:type points: List[List[int]]
:rtype: float
"""
# S=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)
def size(p1,p2,p3):
(x1, y1), (x2, y2), (x3, y3) = p1, p2, p3
return 0.5 * abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2))
return max(size(a, b, c) for a, b, c in itertools.combinations(points, 3))
知识点:
itertools
库
combinations(iterable, r)
from itertools import combinations
list(combinations('ABC', 2))
>>>[('A', 'B'), ('A', 'C'), ('B', 'C')]
网友评论