寫在前面: 三個for循環暴力求解,用到了高中學過的海倫公式,吐槽一下力扣C++測試點又bug了,本地執行代碼過了測試點,然後提交平臺給我報錯。。。這種水題害我調試半天,還是改點代碼用JS寫一把過的
這是我的 力扣github倉庫 ,有JavaScript和C++兩個版本,每日更新。覺得有用的朋友請點點star~
C++代碼
class Solution {
public:
double largestTriangleArea(vector<vector<int>>& points) {
int len=points.size();
int m=0;
for(int i=0;i<len;i++){
double i_x=points[i][0],i_y=points[i][1];
for(int j=i+1;j<len;j++){
double j_x=points[j][0],j_y=points[j][1];
for(int k=j+1;k<len;k++){
double k_x=points[k][0],k_y=points[k][1];
double len1 = length(i_x,i_y,j_x,j_y);
double len2 = length(i_x,i_y,k_x,k_y);
double len3 = length(j_x,j_y,k_x,k_y);
double areas=area(len1,len2,len3);
if(m<areas){ //這裏力扣平臺判斷有問題
// cout<<areas<<" ";
m=areas;
// cout<<m<<endl;
}
}
}
}
return m;
}
double length(double s1_x,double s1_y,double s2_x,double s2_y){
return sqrt(pow(s1_x-s2_x,2)+pow(s1_y-s2_y,2));
}
double area(double a,double b,double c){
double sum=(a+b+c)/2.0;
return pow(sum*(sum-a)*(sum-b)*(sum-c),0.5);
}
};
JS代碼:
/**
* @param {number[][]} points
* @return {number}
*/
var largestTriangleArea = function(points) {
var len=points.length;
var m=0;
for(var i=0;i<len;i++){
var i_x=points[i][0],i_y=points[i][1];
for(var j=i+1;j<len;j++){
var j_x=points[j][0],j_y=points[j][1];
for(var k=j+1;k<len;k++){
var k_x=points[k][0],k_y=points[k][1];
var len1 = length(i_x,i_y,j_x,j_y);
var len2 = length(i_x,i_y,k_x,k_y);
var len3 = length(j_x,j_y,k_x,k_y);
var areas=area(len1,len2,len3);
if(m<areas){
m=areas;
}
}
}
}
return m;
};
function length(s1_x,s1_y,s2_x,s2_y){
return Math.sqrt(Math.pow(s1_x-s2_x,2)+Math.pow(s1_y-s2_y,2));
}
function area(a,b,c){
var sum=(a+b+c)/2.0;
return Math.pow(sum*(sum-a)*(sum-b)*(sum-c),0.5);
}