近期一直在用python刷leetcode的题,代码都提交到了github上了:https://github.com/Teingi/test
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
注意:
3 <= points.length <= 50
.-50 <= points[i][j] <= 50
.10^-6
以内都认为是正确答案。思路:
1、添加一个函数求三角形面积 ;
2、三重for循环把所有可能的面积全部求出,然后从中挑出最大的。
class Solution(object):
def largestTriangleArea(self, points):
"""
:type points: List[List[int]]
:rtype: float
"""
List = []
for i in range(len(points)-2):
for j in range(i+1,len(points)-1):
for k in range(j+1,len(points)):
S = self.TriangleArea(points[i],points[j],points[k])
List.append(S)
return max(List)
def TriangleArea(self,A,B,C):
"""
给定三个坐标,求三角形面积
"""
x1,x2,x3 = A[0],B[0],C[0]
y1,y2,y3 = A[1],B[1],C[1]
return 0.5 * abs(x2 * y3 + x1 * y2 + x3 * y1 - x3 * y2 - x2 * y1 - x1 * y3)