正经的写肯定是三重循环确定三个点然后根据数学公式以三个点坐标计算所有的面积,一直保存最大值就可以了。
不过还是先想想有没有什么可以优化的地方。。
三角形问题还没有认真研究过,还是借肩膀一用
也没有什么好的方法,就是计算面积的时候有点东西(和数学一样)
这是题解里给出的鞋带公式计算多边形面积
下面自己用海伦公式做一遍
class Solution {
public double largestTriangleArea(int[][] points) {
int l=points.length;
double max=0;
double tem;
for(int i=0;i<l;i++)
for(int j=i+1;j<l;j++)
for(int k=j+1;k<l;k++)
{
tem=Helen(points[i],points[j],points[k]);
max=Math.max(tem,max);
}
return max;
}
public double distence(int[] p,int[] q){
return Math.sqrt((p[0]-q[0])*(p[0]-q[0])+(p[1]-q[1])*(p[1]-q[1]));
}
public double Helen(int[] m,int[] n,int[] o){
double a=distence(m,n);
double b=distence(m,o);
double c=distence(n,o);
double p=(a+b+c)/2;
return Math.sqrt(Math.abs(p*(p-a)*(p-b)*(p-c)));
}
}
怎么说呢,遇到了几个问题,一个是计算海伦公式需要绝对值,还有一个就是在于数组的传递,除了这两种之外也没有什么更好的解法,就当做一次小小的练习了,明天继续加油!